Spec-Zone.ru › Qt 5.12

Класс QWidgetAction

Класс QWidgetAction расширяет класс QAction, предоставляя интерфейс для вставки пользовательских виджетов в контейнеры действий, такие как панели инструментов. Подробнее...

Заголовок: #include <QWidgetAction>
qmake: QT += widgets
С версии: Qt 4.2
Наследует: QAction
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые функции

QWidgetAction(QObject *parent)
virtual ~QWidgetAction()
QWidget * defaultWidget() const
void releaseWidget(QWidget *widget)
QWidget * requestWidget(QWidget *parent)
void setDefaultWidget(QWidget *widget)
  • 49 открытых функций унаследованных от QAction
  • 31 открытых функций унаследованных от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов унаследованных от QObject

Защищённые функции

virtual QWidget * createWidget(QWidget *parent)
QList<QWidget *> createdWidgets() const
virtual void deleteWidget(QWidget *widget)

Переопределённые защищённые функции

virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *obj, QEvent *event) override
  • 1 защищённая функция унаследованная от QAction
  • 9 защищённых функций унаследованных от QObject

Дополнительные унаследованные члены

  • 18 свойств унаследованных от QAction
  • 1 свойства унаследованного от QObject
  • 7 публичных слотов унаследованных от QAction
  • 1 публичный слот унаследованный от QObject
  • 4 сигналов унаследованных от QAction
  • 2 сигналов унаследованных от QObject

Подробное описание

Класс QWidgetAction расширяет класс QAction, предоставляя интерфейс для вставки пользовательских виджетов в контейнеры действий, такие как панели инструментов.

Большинство действий в приложении представлены как элементы в меню или кнопки на панелях инструментов. Однако иногда необходимы более сложные виджеты. Например, действие масштабирования в текстовом редакторе может быть реализовано с помощью QComboBox в QToolBar, представляя диапазон различных уровней масштаба. QToolBar предоставляет функцию QToolBar::insertWidget() для удобной вставки одиночного виджета. Однако если требуется реализовать действие, использующее пользовательские виджеты для визуализации в нескольких контейнерах, необходимо создать подкласс QWidgetAction.

Если QWidgetAction добавляется, например, в QToolBar, вызывается функция QWidgetAction::createWidget(). Реализации этой функции должны создавать новый пользовательский виджет с указанным родителем.

Если действие удаляется из контейнера виджета, вызывается функция QWidgetAction::deleteWidget() с ранее созданным пользовательским виджетом в качестве аргумента. Стандартная реализация скрывает виджет и удаляет его с помощью QObject::deleteLater().

Если используется только один пользовательский виджет, его можно установить как виджет по умолчанию с помощью setDefaultWidget(). Этот виджет будет использоваться, если действие добавлено в QToolBar или в другой контейнер действий, поддерживающий QWidgetAction. Если QWidgetAction с единственным виджетом по умолчанию добавлен в две панели инструментов одновременно, виджет по умолчанию будет отображаться только в первой панели инструментов, в которую было добавлено действие. QWidgetAction принимает на себя владение виджетом по умолчанию.

Обратите внимание, что виджету необходимо активировать действие, например, переопределяя обработчики событий мыши и вызывая QAction::trigger().

macOS: Если вы добавляете виджет в меню на панели меню приложения на macOS, виджет будет добавлен и работать, но с некоторыми ограничениями:

  1. Виджет перемещается от QMenu к собственному представлению меню. Если вы показываете меню в другом месте (например, как всплывающее меню), виджет там не будет.
  2. Обработка фокуса/клавиатуры для виджета невозможна.
  3. Из-за дизайна Apple, отслеживание мыши по виджету в настоящее время не работает.
  4. Подключение сигнала triggered() к слоту, открывающему модальное диалоговое окно, приведёт к ошибке на macOS 10.4 (известная ошибка, подтвержденная Apple). Обходным путём является использование QueuedConnection вместо DirectConnection.

См. также QAction, QActionGroup и QWidget.

Документация по функциям членов

QWidgetAction::QWidgetAction(QObject *parent)

Конструирует действие с parent.

[virtual] QWidgetAction::~QWidgetAction()

Удаляет объект и освобождает выделенные ресурсы.

[virtual protected] QWidget *QWidgetAction::createWidget(QWidget *parent)

Эта функция вызывается всякий раз, когда действие добавляется в контейнер виджета, поддерживающий пользовательские виджеты. Если вы не хотите использовать пользовательский виджет в качестве представления действия в указанном виджете parent, следует вернуть 0.

См. также deleteWidget().

[protected] QList<QWidget *> QWidgetAction::createdWidgets() const

Возвращает список виджетов, которые были созданы с помощью createWidget() и в настоящее время используются виджетами, к которым было добавлено действие.

QWidget *QWidgetAction::defaultWidget() const

Возвращает виджет по умолчанию.

См. также setDefaultWidget().

[virtual protected] void QWidgetAction::deleteWidget(QWidget *widget)

Эта функция вызывается всякий раз, когда действие удаляется из контейнера виджета, отображающего действие с помощью пользовательского widget, ранее созданного с помощью createWidget(). Стандартная реализация скрывает widget и планирует его удаление с помощью QObject::deleteLater().

См. также createWidget().

[override virtual protected] bool QWidgetAction::event(QEvent *event)

Переопределяет QAction::event().

[override virtual protected] bool QWidgetAction::eventFilter(QObject *obj, QEvent *event)

Переопределяет QObject::eventFilter().

void QWidgetAction::releaseWidget(QWidget *widget)

Освобождает указанный widget.

Контейнеры виджетов, поддерживающие действия, вызывают эту функцию, когда действие виджета удаляется.

См. также requestWidget(), deleteWidget() и defaultWidget().

QWidget *QWidgetAction::requestWidget(QWidget *parent)

Возвращает виджет, представляющий действие, с заданным parent.

Контейнерные виджеты, поддерживающие действия, могут вызвать эту функцию, чтобы запросить виджет в качестве визуального представления действия.

См. также releaseWidget(), createWidget() и defaultWidget().

void QWidgetAction::setDefaultWidget(QWidget *widget)

Устанавливает widget в качестве виджета по умолчанию. Владение передаётся QWidgetAction. Если подкласс не переопределяет createWidget() для возврата нового виджета, виджет по умолчанию используется, когда контейнерный виджет запрашивает виджет через requestWidget().

См. также defaultWidget().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qwidgetaction.html

Spec-Zone.ru

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