Spec-Zone.ru › Qt 6.0

Класс 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

Spec-Zone.ru

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