Класс 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 предоставляет концепцию виджетов прикрепления, также известные как панели инструментов или служебные окна. Окна прикрепления — это вторичные окна, размещенные в области виджетов прикрепления вокруг центрального виджета в 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.
END_OF_DOCUMENT_MARKERДокументация свойств
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.1/qdockwidget.html