Класс QDockWidget
Класс QDockWidget предоставляет виджет, который может быть прикреплён к QMainWindow или отображаться как окно верхнего уровня на рабочем столе. Подробнее...
| Заголовок: | #include <QDockWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Типы public
| перечисление | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures } |
| флаги | DockWidgetFeatures |
Свойства
- allowedAreas : Qt::DockWidgetAreas
- features : DockWidgetFeatures
- floating : bool
- windowTitle : QString
Функции public
| 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 кнопки открепления и закрытия могут быть отключены или вообще не отображаться.
Визуальный вид панели заголовка и кнопок зависит от используемого стиля.
QDockWidget выступает в качестве оболочки для своего дочернего виджета, заданного с помощью setWidget(). Пользовательские подсказки размера, минимальные и максимальные размеры и политики размера должны быть реализованы в дочернем виджете. QDockWidget будет их учитывать, корректируя собственные ограничения для включения рамки и панели заголовка. Ограничения размера не следует устанавливать на сам QDockWidget, потому что они меняются в зависимости от того, прикреплён ли он; прикреплённый QDockWidget не имеет рамки и меньшую панель заголовка.
См. также 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(). Эти функции должны учитывать текущую ориентацию панели заголовка.
- Удалить панель заголовка из виджета QDockWidget невозможно. Однако, аналогичный эффект можно получить, установив виджет QWidget с конструктором по умолчанию в качестве виджета панели заголовка.
Использование qobject_cast(), как показано выше, позволяет виджету панели заголовка получить полный доступ к родителю QDockWidget. Таким образом, он может выполнять такие операции, как пристыковка и скрытие в ответ на действия пользователя.
См. также titleBarWidget() и DockWidgetVerticalTitleBar.
void QDockWidget::setWidget(QWidget *widget)
Устанавливает виджет для виджета QDockWidget в widget.
Если виджет QDockWidget виден при добавлении widget, необходимо явно вызвать show().
Обратите внимание, что необходимо добавить макет для widget перед вызовом этой функции; в противном случае widget не будет виден.
См. также widget().
QWidget *QDockWidget::titleBarWidget() const
Возвращает настроенный виджет панели заголовка, установленный для QDockWidget, или nullptr , если такой виджет не установлен.
См. также setTitleBarWidget().
QAction *QDockWidget::toggleViewAction() const
Возвращает флажковый виджет, который можно добавить в меню и панели инструментов, чтобы пользователь мог показывать или скрывать этот виджет QDockWidget.
Текст виджета устанавливается в заголовок окна виджета QDockWidget.
Примечание: Виджет нельзя использовать для программированного отображения или скрытия виджета QDockWidget. Используйте свойство visible для этого.
См. также QAction::text и QWidget::windowTitle.
QWidget *QDockWidget::widget() const
Возвращает виджет для виджета QDockWidget. Эта функция возвращает ноль, если виджет не был установлен.
См. также setWidget().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qdockwidget.html