Класс QDockWidget
Класс QDockWidget предоставляет виджет, который может быть прикреплён к QMainWindow или плавающим окном на рабочем столе. Подробнее...
| Заголовок: | #include <QDockWidget> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Типы публичного доступа
| Перечисление | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, AllDockWidgetFeatures, NoDockWidgetFeatures } |
| флаги | DockWidgetFeatures |
Свойства
- allowedAreas : Qt::DockWidgetAreas
- features : DockWidgetFeatures
- floating : bool
- windowTitle : QString
Функции публичного доступа
| QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = ...) | |
| QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = ...) | |
| 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 |
- 214 функций публичного доступа, унаследованных от QWidget
- 31 функция публичного доступа, унаследованная от QObject
- 14 функция публичного доступа, унаследованная от QPaintDevice
Сигналы
| void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
| void | dockLocationChanged(Qt::DockWidgetArea area) |
| void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
| void | topLevelChanged(bool topLevel) |
| void | visibilityChanged(bool visible) |
Статические публичные члены
| const QMetaObject | staticMetaObject |
- 5 статических публичных членов, унаследованных от QWidget
- 9 статических публичных членов, унаследованных от QObject
Защищённые функции
| 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 |
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 19 слотов публичного доступа, унаследованных от QWidget
- 1 слот публичного доступа, унаследованный от QObject
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Класс QDockWidget предоставляет виджет, который может быть прикреплён к QMainWindow или плавающим окном на рабочем столе.
QDockWidget предоставляет концепцию прикреплённых виджетов, также известных как панели инструментов или служебные окна. Окна прикрепления — это вторичные окна, размещаемые в области прикрепления виджетов вокруг центрального виджета в QMainWindow.
Окна прикрепления могут перемещаться внутри своей текущей области, перемещаться в новые области и плавать (например, открепляться) пользователем. API QDockWidget позволяет программисту ограничить возможность перемещения, плавания и закрытия виджетов прикрепления, а также области, в которых они могут быть размещены.
Внешний вид
Прикреплённый виджет QDockWidget состоит из панели заголовка и области содержимого. Панель заголовка отображает заголовок окна виджета прикрепления, кнопку плавающего окна и кнопку закрытия. В зависимости от состояния QDockWidget, кнопки плавающего окна и закрытия могут быть либо отключены, либо вообще не отображаться.
Визуальный вид панели заголовка и кнопок зависит от используемого стиля.
QDockWidget выступает в качестве оболочки для своего дочернего виджета, установленного с помощью setWidget(). Пользовательские подсказки размера, минимальный и максимальный размеры и политики размера должны быть реализованы в дочернем виджете. QDockWidget будет учитывать их, корректируя свои собственные ограничения для включения рамки и заголовка. Ограничения размеров не должны устанавливаться для самого QDockWidget, потому что они меняются в зависимости от того, прикреплён он или нет; прикреплённый QDockWidget не имеет рамки и имеет меньшую панель заголовка.
См. также QMainWindow и Пример виджетов прикрепления.
Документация по типам членов
enum QDockWidget::DockWidgetFeatureflags QDockWidget::DockWidgetFeatures
| Константа | Значение | Описание |
|---|---|---|
QDockWidget::DockWidgetClosable |
0x01 |
Окно виджета дока может быть закрыто. На некоторых системах окно виджета дока всегда имеет кнопку закрытия, когда оно плавающее (например, на MacOS 10.5). |
QDockWidget::DockWidgetMovable |
0x02 |
Пользователь может перемещать окно виджета дока между доками. |
QDockWidget::DockWidgetFloatable |
0x04 |
Окно виджета дока может быть отделено от основного окна и представлено в виде независимого окна. |
QDockWidget::DockWidgetVerticalTitleBar |
0x08 |
Окно виджета дока отображает вертикальную строку заголовка слева. Это может быть использовано для увеличения вертикального пространства в QMainWindow. |
QDockWidget::AllDockWidgetFeatures |
DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable |
(Устарело) Окно виджета дока может быть закрыто, перемещено и отображено как плавающее. Поскольку в будущих выпусках могут быть добавлены новые функции, внешний вид и поведение виджетов доков могут измениться, если вы используете этот флаг. Пожалуйста, укажите отдельные флаги вместо этого. |
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(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = ...)
Создаёт виджет QDockWidget с родителем parent и флагами окна flags. Виджет дока будет размещён в левой области виджета дока.
Заголовок окна установлен в title. Этот заголовок используется, когда QDockWidget прикреплён и откреплён. Он также используется в контекстном меню, предоставляемом QMainWindow.
См. также setWindowTitle().
QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = ...)
Создаёт виджет QDockWidget с родителем parent и флагами окна flags. Виджет дока будет размещён в левой области виджета дока.
[virtual] QDockWidget::~QDockWidget()
Уничтожает виджет дока.
[signal] void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
Этот сигнал отправляется при изменении свойства allowedAreas. Параметр allowedAreas содержит новое значение свойства.
Примечание: Сигнал уведомления для свойства allowedAreas.
[override virtual protected] void QDockWidget::changeEvent(QEvent *event)
Переопределено из QWidget::changeEvent().
[override virtual protected] void QDockWidget::closeEvent(QCloseEvent *event)
Переопределено из QWidget::closeEvent().
[signal] void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)
Этот сигнал отправляется, когда виджет дока перемещается в другую область дока area или перемещается в другое место в текущей области дока. Это происходит, когда виджет дока перемещается программно или перетаскивается пользователем в новое место.
Эта функция была добавлена в Qt 4.3.
[override virtual protected] bool QDockWidget::event(QEvent *event)
Переопределено из QWidget::event().
[signal] void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)
Этот сигнал отправляется при изменении свойства features. Параметр features содержит новое значение свойства.
Примечание: Сигнал уведомления для свойства features.
[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().
void QDockWidget::setTitleBarWidget(QWidget *widget)
Устанавливает произвольный виджет widget в качестве панели заголовка виджета QDockWidget. Если widget равен 0, любой пользовательский виджет панели заголовка, ранее установленный для виджета QDockWidget, удаляется (но не удаляется), и вместо него используется стандартная панель заголовка.
Если виджет панели заголовка установлен, 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. Таким образом, он может выполнять такие операции, как прикрепление и скрытие в ответ на действия пользователя.
Эта функция была представлена в Qt 4.3.
См. также titleBarWidget() и DockWidgetVerticalTitleBar.
void QDockWidget::setWidget(QWidget *widget)
Устанавливает виджет для виджета QDockWidget в widget.
Если виджет QDockWidget видимый, когда widget добавляется, вы должны явно вызвать show().
Обратите внимание, что вы должны добавить макет widget перед вызовом этой функции; в противном случае widget не будет виден.
См. также widget().
QWidget *QDockWidget::titleBarWidget() const
Возвращает установленный пользовательский виджет панели заголовка для QDockWidget или 0, если пользовательский виджет панели заголовка не установлен.
Эта функция была представлена в Qt 4.3.
См. также setTitleBarWidget().
QAction *QDockWidget::toggleViewAction() const
Возвращает флажковый виджет, который можно использовать для отображения или скрытия этого виджета QDockWidget.
Текст виджета устанавливается в заголовок окна виджета QDockWidget.
См. также QAction::text и QWidget::windowTitle.
void QDockWidget::topLevelChanged(bool topLevel)
Этот сигнал излучается при изменении свойства floating. Параметр topLevel равен true, если виджет QDockWidget теперь плавающий, иначе false.
См. также isWindow().
void QDockWidget::visibilityChanged(bool visible)
Этот сигнал излучается, когда виджет QDockWidget становится видимым (или невидимым). Это происходит при скрытии или показе виджета, а также при его закреплении во вкладке области QDockWidget и выборе или отмене выбора вкладки.
Эта функция была представлена в Qt 4.3.
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-5.12/qdockwidget.html