Spec-Zone.ru › Qt

Класс QDockWidget

Класс QDockWidget предоставляет виджет, который может быть прикреплён внутри QMainWindow или отображаться как окно верхнего уровня на рабочем столе. Подробнее...

Заголовок: #include <QDockWidget>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QWidget
  • Список всех членов, включая унаследованные

Типы публичного доступа

Перечисление DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures }
Флаги DockWidgetFeatures

Свойства

  • allowedAreas : Qt::DockWidgetAreas
  • features : DockWidgetFeatures
  • floating : bool
  • windowTitle : QString

Функции публичного доступа

QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual ~QDockWidget()
Qt::DockWidgetAreas allowedAreas() const
QDockWidget::DockWidgetFeatures features() const
bool isAreaAllowed(Qt::DockWidgetArea area) const
bool isFloating() const
void setAllowedAreas(Qt::DockWidgetAreas areas)
void setFeatures(QDockWidget::DockWidgetFeatures features)
void setFloating(bool floating)
void setTitleBarWidget(QWidget *widget)
void setWidget(QWidget *widget)
QWidget * titleBarWidget() const
QAction * toggleViewAction() const
QWidget * widget() const

Сигналы

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
void dockLocationChanged(Qt::DockWidgetArea area)
void featuresChanged(QDockWidget::DockWidgetFeatures features)
void topLevelChanged(bool topLevel)
void visibilityChanged(bool visible)

Защищённые функции

virtual void initStyleOption(QStyleOptionDockWidget *option) const

Переопределённые защищённые функции

virtual void changeEvent(QEvent *event) override
virtual void closeEvent(QCloseEvent *event) override
virtual bool event(QEvent *event) override
virtual void paintEvent(QPaintEvent *event) override

Подробное описание

QDockWidget предоставляет концепцию виджетов-панелей, также известных как панели инструментов или окна утилит. Окна панелей — это вторичные окна, размещённые в области виджетов-панелей вокруг центрального виджета (central widget) в QMainWindow.

Окна панелей могут перемещаться внутри текущей области, перемещаться в новые области и быть откреплёнными (например, отстыковать) пользователем. API QDockWidget позволяет программисту ограничить возможность перемещения, открепления и закрытия виджетов-панелей, а также области, в которых они могут быть размещены.

Внешний вид

QDockWidget состоит из панели заголовка и области содержимого. Панель заголовка отображает заголовок окна виджета-панели, кнопку открепления и кнопку закрытия. В зависимости от состояния QDockWidget кнопки открепления и закрытия могут быть либо отключены, либо вообще не отображаться.

Внешний вид панели заголовка и кнопок зависит от используемого стиля (style).

QDockWidget действует как обёртка для своего дочернего виджета, заданного с помощью setWidget(). Настраиваемые подсказки размера, минимальные и максимальные размеры и политики размера должны быть реализованы в дочернем виджете. QDockWidget будет их соблюдать, изменяя собственные ограничения, чтобы включать рамку и заголовок. Ограничения размера не должны быть заданы для самого QDockWidget, так как они изменяются в зависимости от того, прикреплён ли он; прикреплённый QDockWidget не имеет рамки и имеет меньшую панель заголовка.

Примечание: В macOS, если у QDockWidget есть родной дескриптор окна (например, если вызвана winId() или дочерний виджет), то из-за ограничения невозможно перетащить виджет-панель при откреплении. Начало перетаскивания открепит виджет-панель, но для перемещения самого виджета-панели потребуется второе перетаскивание.

См. также QMainWindow и Пример виджетов-панелей.

Документация по типам членов

перечисление QDockWidget::DockWidgetFeatureфлаги QDockWidget::DockWidgetFeatures

Константа Значение Описание
QDockWidget::DockWidgetClosable 0x01 Виджет панели может быть закрыт. На некоторых системах виджет панели всегда имеет кнопку закрытия, когда он откреплён (например, в MacOS 10.5).
QDockWidget::DockWidgetMovable 0x02 Пользователь может перемещать виджет панели между панелями.
QDockWidget::DockWidgetFloatable 0x04 Виджет панели можно отсоединить от главного окна и отображать как независимое окно.
QDockWidget::DockWidgetVerticalTitleBar 0x08 Виджет панели отображает вертикальную панель заголовка слева. Это можно использовать для увеличения вертикального пространства в QMainWindow.
QDockWidget::NoDockWidgetFeatures 0x00 Виджет панели не может быть закрыт, перемещён или откреплён.

Тип DockWidgetFeatures является типом-синонимом для QFlags<DockWidgetFeature>. Он хранит логическое ИЛИ сочетание значений DockWidgetFeature.

Документация по свойствам

allowedAreas : Qt::DockWidgetAreas

области, в которых может размещаться виджет док-панели

По умолчанию используется Qt::AllDockWidgetAreas.

Функции доступа:

Qt::DockWidgetAreas allowedAreas() const
void setAllowedAreas(Qt::DockWidgetAreas areas)

Сигнал уведомления:

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

См. также Qt::DockWidgetArea.

features : DockWidgetFeatures

Это свойство указывает, можно ли перемещать, закрывать и откреплять виджет док-панели.

По умолчанию это свойство установлено в комбинацию DockWidgetClosable, DockWidgetMovable и DockWidgetFloatable.

Функции доступа:

QDockWidget::DockWidgetFeatures features() const
void setFeatures(QDockWidget::DockWidgetFeatures features)

Сигнал уведомления:

void featuresChanged(QDockWidget::DockWidgetFeatures features)

См. также DockWidgetFeature.

floating : bool

Это свойство указывает, является ли виджет док-панели откреплённым.

Откреплённый виджет док-панели отображается пользователю как отдельное окно «сверху» родительского QMainWindow, вместо того, чтобы быть прикреплённым к QMainWindow.

По умолчанию это свойство равно true.

При изменении этого свойства излучается сигнал topLevelChanged().

Функции доступа:

bool isFloating() const
void setFloating(bool floating)

См. также isWindow() и topLevelChanged().

windowTitle : QString

Это свойство содержит заголовок виджета док-панели (подпись).

По умолчанию это свойство содержит пустую строку.

Функции доступа:

QString windowTitle() const
void setWindowTitle(const QString &)

Сигнал уведомления:

void windowTitleChanged(const QString &title)

Документация по функциям-членам

QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Конструирует QDockWidget с родителем parent и флагами окна flags. Виджет док-панели будет размещён в левой области виджета док-панели.

QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Конструирует QDockWidget с родителем parent и флагами окна flags. Виджет док-панели будет размещён в левой области виджета док-панели.

Заголовок окна устанавливается в title. Этот заголовок используется, когда QDockWidget прикреплён и откреплён. Он также используется в контекстном меню, предоставляемом QMainWindow.

См. также setWindowTitle().

[signal] void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Этот сигнал излучается, когда изменяется свойство allowedAreas. Параметр allowedAreas содержит новое значение свойства.

Примечание: Сигнал уведомления для свойства allowedAreas.

[signal] void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)

Этот сигнал излучается, когда виджет док-панели перемещается в другую область док-панели area или перемещается в другое место в текущей области док-панели. Это происходит, когда виджет док-панели перемещается программно или перетаскивается пользователем в новое место.

[signal] void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)

Этот сигнал излучается, когда изменяется свойство features. Параметр features содержит новое значение свойства.

Примечание: Сигнал уведомления для свойства features.

[signal] void QDockWidget::topLevelChanged(bool topLevel)

Этот сигнал излучается, когда изменяется свойство floating. Параметр topLevel равен true, если виджет док-панели теперь откреплён, иначе он равен false.

См. также isWindow().

[signal] void QDockWidget::visibilityChanged(bool visible)

Этот сигнал излучается, когда виджет док-панели становится visible (или невидимым). Это происходит, когда виджет скрыт или показан, а также когда он прикреплён в области док-панели с вкладками, и его вкладка становится выделенной или отменённой.

[virtual] QDockWidget::~QDockWidget()

Уничтожает виджет док-панели.

[override virtual protected] void QDockWidget::changeEvent(QEvent *event)

Переопределяет: QWidget::changeEvent(QEvent *event).

[override virtual protected] void QDockWidget::closeEvent(QCloseEvent *event)

Переопределяет: QWidget::closeEvent(QCloseEvent *event).

[override virtual protected] bool QDockWidget::event(QEvent *event)

Переопределяет: QWidget::event(QEvent *event).

[virtual protected] void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const

Инициализирует option значениями из этого QDockWidget. Этот метод полезен для подклассов, когда им нужен QStyleOptionDockWidget, но они не хотят заполнять всю информацию самостоятельно.

См. также QStyleOption::initFrom().

bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const

Возвращает true , если этот виджет док-панели может быть размещён в заданной области area; в противном случае возвращает false.

[override virtual protected] void QDockWidget::paintEvent(QPaintEvent *event)

Переопределяет: QWidget::paintEvent(QPaintEvent *event).

void QDockWidget::setTitleBarWidget(QWidget *widget)

Устанавливает произвольный widget как панель заголовка виджета док-панели. Если widget является nullptr, любой пользовательский виджет панели заголовка, ранее установленный на виджет док-панели, удаляется, но не удаляется, и вместо него используется стандартная панель заголовка.

Если установлена панель заголовка, QDockWidget не будет использовать стандартные декорации окна при его откреплении.

Вот несколько советов по реализации пользовательских панелей заголовка:

  • События мыши, которые не обрабатываются явно виджетом панели заголовка, должны игнорироваться вызовом QMouseEvent::ignore(). Эти события затем передаются родительскому QDockWidget, который обрабатывает их стандартным образом, перемещая окно при перетаскивании панели заголовка, прикрепляя и открепляя при двойном щелчке и т. д.
  • Когда свойство DockWidgetVerticalTitleBar установлено для QDockWidget, виджет панели заголовка перепозиционируется соответственно. В методе resizeEvent() виджет панели заголовка должен проверить, какую ориентацию он должен принять:
    QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget());
    if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) {
        // I need to be vertical
    } else {
        // I need to be horizontal
    }
  • Виджет панели заголовка должен иметь корректное значение QWidget::sizeHint() и QWidget::minimumSizeHint(). Эти функции должны учитывать текущую ориентацию панели заголовка.
  • Удалить панель заголовка из виджета привязки невозможно. Однако аналогичный эффект можно достичь, установив виджет QWidget по умолчанию в качестве виджета панели заголовка.

Используя qobject_cast() как показано выше, виджет панели заголовка имеет полный доступ к родительскому QDockWidget. Следовательно, он может выполнять такие операции, как прикрепление и скрытие в ответ на действия пользователя.

См. также titleBarWidget() и DockWidgetVerticalTitleBar.

void QDockWidget::setWidget(QWidget *widget)

Устанавливает виджет для виджета привязки в widget.

Если виджет привязки виден при добавлении widget, необходимо явно вызвать show() для него.

Обратите внимание, что необходимо добавить макет для widget перед вызовом этой функции; в противном случае widget не будет виден.

См. также widget().

QWidget *QDockWidget::titleBarWidget() const

Возвращает настроенный виджет панели заголовка, установленный для QDockWidget, или nullptr , если настроенный виджет панели заголовка не был установлен.

См. также setTitleBarWidget().

QAction *QDockWidget::toggleViewAction() const

Возвращает действие, которое можно добавить в меню и панели инструментов, чтобы пользователь мог показывать или скрывать этот виджет привязки.

Текст действия устанавливается в заголовок окна виджета привязки.

Примечание: Действие нельзя использовать для программного отображения или скрытия виджета привязки. Используйте свойство visible для этой цели.

См. также QAction::text и QWidget::windowTitle.

QWidget *QDockWidget::widget() const

Возвращает виджет для виджета привязки. Эта функция возвращает ноль, если виджет не был установлен.

См. также setWidget().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qdockwidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API