Spec-Zone.ru › Qt 6.1

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

Spec-Zone.ru

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