Spec-Zone.ru › Qt

Класс QAction

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

Заголовок: #include <QAction>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
С тех пор: Qt 6.0
Наследуется от: QObject
Наследует:

QWidgetAction

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Типы публичного доступа

перечисление ActionEvent { Trigger, Hover }
перечисление MenuRole { NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, AboutRole, …, QuitRole }
перечисление Priority { LowPriority, NormalPriority, HighPriority }

Свойства

  • autoRepeat : bool
  • checkable : bool
  • checked : bool
  • enabled : bool
  • font : QFont
  • icon : QIcon
  • iconText : QString
  • iconVisibleInMenu : bool
  • menuRole : MenuRole
  • priority : Priority
  • shortcut : QKeySequence
  • shortcutContext : Qt::ShortcutContext
  • shortcutVisibleInContextMenu : bool
  • statusTip : QString
  • text : QString
  • toolTip : QString
  • visible : bool
  • whatsThis : QString

Общедоступные функции

QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr)
QAction(const QString &text, QObject *parent = nullptr)
QAction(QObject *parent = nullptr)
virtual ~QAction()
QActionGroup * actionGroup() const
void activate(QAction::ActionEvent event)
QList<QObject *> associatedObjects() const
bool autoRepeat() const
QVariant data() const
QFont font() const
QIcon icon() const
QString iconText() const
bool isCheckable() const
bool isChecked() const
bool isEnabled() const
bool isIconVisibleInMenu() const
bool isSeparator() const
bool isShortcutVisibleInContextMenu() const
bool isVisible() const
QAction::MenuRole menuRole() const
QAction::Priority priority() const
void setActionGroup(QActionGroup *group)
void setAutoRepeat(bool)
void setCheckable(bool)
void setData(const QVariant &data)
void setFont(const QFont &font)
void setIcon(const QIcon &icon)
void setIconText(const QString &text)
void setIconVisibleInMenu(bool visible)
void setMenuRole(QAction::MenuRole menuRole)
void setPriority(QAction::Priority priority)
void setSeparator(bool b)
void setShortcut(const QKeySequence &shortcut)
void setShortcutContext(Qt::ShortcutContext context)
void setShortcutVisibleInContextMenu(bool show)
void setShortcuts(const QList<QKeySequence> &shortcuts)
void setShortcuts(QKeySequence::StandardKey key)
void setStatusTip(const QString &statusTip)
void setText(const QString &text)
void setToolTip(const QString &tip)
void setWhatsThis(const QString &what)
QKeySequence shortcut() const
Qt::ShortcutContext shortcutContext() const
QList<QKeySequence> shortcuts() const
bool showStatusText(QObject *object = nullptr)
QString statusTip() const
QString text() const
QString toolTip() const
QString whatsThis() const

Публичные слоты

void hover()
void resetEnabled()
void setChecked(bool)
void setDisabled(bool b)
void setEnabled(bool)
void setVisible(bool)
void toggle()
void trigger()

Сигналы

void changed()
void checkableChanged(bool checkable)
void enabledChanged(bool enabled)
void hovered()
void toggled(bool checked)
void triggered(bool checked = false)
void visibleChanged()

Реализованные защищенные функции

virtual bool event(QEvent *e) override

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

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

Действия могут быть добавлены в меню и панели инструментов и автоматически будут синхронизированы. Например, в текстовом процессоре, если пользователь нажимает кнопку «Жирный» на панели инструментов, элемент меню «Жирный» будет автоматически отмечен.

QAction может содержать значок, текст меню, сочетание клавиш, текст состояния, текст «Что это?», и всплывающую подсказку. Большинство из них можно установить в конструкторе. Их также можно установить независимо с помощью setIcon(), setText(), setIconText(), setShortcut(), setStatusTip(), setWhatsThis() и setToolTip(). Для элементов меню можно установить отдельный шрифт с помощью setFont().

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

QAction в приложениях с виджетами

После создания QAction его необходимо добавить в соответствующее меню и панель инструментов, а затем подключить к слоту, который выполнит действие. Например:

    const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));
    QAction *openAct = new QAction(openIcon, tr("&Open..."), this);
    openAct->setShortcuts(QKeySequence::Open);
    openAct->setStatusTip(tr("Open an existing file"));
    connect(openAct, &QAction::triggered, this, &MainWindow::open);
    fileMenu->addAction(openAct);
    fileToolBar->addAction(openAct);

Действия добавляются в виджеты с помощью QWidget::addAction() или QGraphicsWidget::addAction(). Обратите внимание, что действие необходимо добавить в виджет, прежде чем его можно будет использовать. Это также относится к случаям, когда сочетание клавиш должно быть глобальным (т.е. Qt::ApplicationShortcut в качестве Qt::ShortcutContext).

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

См. также QMenu, QToolBar и Qt Widgets - Пример приложения.

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

перечисление QAction::ActionEvent

Этот тип перечисления используется при вызове QAction::activate()

Константа Значение Описание
QAction::Trigger 0 это вызовет эмиссию сигнала QAction::triggered().
QAction::Hover 1 это вызовет эмиссию сигнала QAction::hovered().

перечисление QAction::MenuRole

Это перечисление описывает, как действие должно быть помещено в меню приложения на macOS.

Константа Значение Описание
QAction::NoRole 0 Это действие не должно быть помещено в меню приложения
QAction::TextHeuristicRole 1 Это действие должно быть помещено в меню приложения на основе текста действия, как описано в документации QMenuBar.
QAction::ApplicationSpecificRole 2 Это действие должно быть помещено в меню приложения с ролью, специфичной для приложения
QAction::AboutQtRole 3 Это действие обрабатывает элемент меню «О Qt».
QAction::AboutRole 4 Это действие должно быть размещено там, где в меню приложения находится элемент меню «О программе». Текст элемента меню будет установлен в «О <название приложения>». Название приложения извлекается из файла Info.plist в пакете приложения (см. Qt для macOS — Развертывание).
QAction::PreferencesRole 5 Это действие должно быть размещено там, где в меню приложения находится элемент меню «Настройки…».
QAction::QuitRole 6 Это действие должно быть размещено там, где в меню приложения находится элемент меню «Выход».

Установление этого значения оказывает влияние только на элементы, которые находятся непосредственно в меню панели меню, а не в подменю этих меню. Например, если у вас есть меню «Файл» в вашей панели меню, и меню «Файл» имеет подменю, установление MenuRole для действий в этом подменю не оказывает никакого влияния. Они никогда не будут перемещены.

перечисление QAction::Priority

Это перечисление определяет приоритеты для действий в пользовательском интерфейсе.

Константа Значение Описание
QAction::LowPriority 0 Действие не должно иметь приоритета в пользовательском интерфейсе.
QAction::NormalPriority 128
QAction::HighPriority 256 Действие должно иметь приоритет в пользовательском интерфейсе.

См. также priority.

END_OF_DOCUMENT_MARKER

Свойства

autoRepeat : bool

Это свойство определяет, может ли действие повторяться автоматически.

Если значение true, действие будет автоматически повторяться при удержании сочетания клавиш, при условии, что автоматическое повторение клавиатуры включено в системе. Значение по умолчанию — true.

Функции доступа:

bool autoRepeat() const
void setAutoRepeat(bool)

Сигнал уведомления:

void changed()

checkable : bool

Это свойство определяет, является ли действие флажком.

Действие-флажок имеет состояние включено/выключено. Например, в текстовом процессоре кнопка «Жирный» на панели инструментов может быть либо включена, либо выключена. Действие, которое не является переключателем, является командным действием; командное действие просто выполняется, например, сохранение файла. По умолчанию это свойство имеет значение false.

В некоторых ситуациях состояние одного переключателя должно зависеть от состояния других. Например, переключатели «Выровнять по левому краю», «По центру» и «Выровнять по правому краю» являются взаимоисключающими. Для достижения исключительного переключения добавьте соответствующие переключатели в QActionGroup со свойством QActionGroup::exclusive, установленным в true.

Функции доступа:

bool isCheckable() const
void setCheckable(bool)

Сигнал уведомления:

void checkableChanged(bool checkable)

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

checked : bool

Это свойство определяет, установлен ли флажок действия.

Только действия-флажки могут быть отмечены. По умолчанию это значение false (флажок не установлен).

Примечание: Сигнал уведомления для этого свойства — toggled(). Поскольку переключение QAction изменяет его состояние, оно также будет генерировать сигнал changed().

Функции доступа:

bool isChecked() const
void setChecked(bool)

Сигнал уведомления:

void toggled(bool checked)

См. также checkable и toggled().

enabled : bool

Это свойство определяет, включено ли действие.

Отключенные действия не могут быть выбраны пользователем. Они не исчезают из меню или панелей инструментов, но отображаются таким образом, чтобы указывать на их недоступность. Например, они могут отображаться только в оттенках серого.

Что это? справка по отключенным действиям по-прежнему доступна, при условии, что установлено свойство QAction::whatsThis.

Действие будет отключено, когда все виджеты, к которым оно добавлено (с помощью QWidget::addAction()), отключены или невидимы. Когда действие отключено, его невозможно запустить с помощью сочетания клавиш.

По умолчанию это свойство имеет значение true (действия включены).

Функции доступа:

bool isEnabled() const
void setEnabled(bool)
void resetEnabled()

Сигнал уведомления:

void enabledChanged(bool enabled)

См. также text.

font : QFont

Это свойство хранит шрифт действия.

Свойство шрифта используется для отображения текста, установленного в QAction. Шрифт можно рассматривать как подсказку, поскольку он не будет использоваться во всех случаях в зависимости от приложения и стиля.

По умолчанию это свойство содержит шрифт по умолчанию приложения.

Функции доступа:

QFont font() const
void setFont(const QFont &font)

Сигнал уведомления:

void changed()

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

icon : QIcon

Это свойство хранит значок действия.

На панелях инструментов значок используется в качестве значка кнопки инструмента; в меню он отображается слева от текста меню. Значка по умолчанию нет.

Если в эту функцию передается нулевой значок (QIcon::isNull()), значок действия очищается.

Функции доступа:

QIcon icon() const
void setIcon(const QIcon &icon)

Сигнал уведомления:

void changed()

iconText : QString

Это свойство хранит описательный текст значка действия.

Если QToolBar::toolButtonStyle установлено в значение, допускающее отображение текста, текст, определенный в этом свойстве, отображается в качестве метки на соответствующей кнопке инструмента.

Он также служит текстом по умолчанию в меню и подсказках, если действие не определено с помощью setText() или setToolTip(), и также будет использоваться в кнопках панели инструментов, если значок не был определен с помощью setIcon().

Если текст значка не установлен явно, для текста значка будет использоваться обычный текст действия.

По умолчанию это свойство содержит пустую строку.

Функции доступа:

QString iconText() const
void setIconText(const QString &text)

Сигнал уведомления:

void changed()

См. также setToolTip() и setStatusTip().

iconVisibleInMenu : bool

Это свойство определяет, следует ли показывать значок действия в меню.

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

По умолчанию используется значение атрибута Qt::AA_DontShowIconsInMenus для приложения. Явная установка этого свойства переопределяет наличие (или отсутствие) атрибута.

Например:

QApplication app(argc, argv);
app.setAttribute(Qt::AA_DontShowIconsInMenus);  // Icons are *no longer shown* in menus
// ...
QAction *myAction = new QAction();
// ...
myAction->setIcon(SomeIcon);
myAction->setIconVisibleInMenu(true);   // Icon *will* be shown in menus for *this* action.

Функции доступа:

bool isIconVisibleInMenu() const
void setIconVisibleInMenu(bool visible)

Сигнал уведомления:

void changed()

См. также icon и QCoreApplication::setAttribute().

menuRole : MenuRole

Это свойство хранит роль действия в меню.

Это указывает, какую роль играет действие в меню приложения на macOS. По умолчанию все действия имеют TextHeuristicRole, что означает, что действие добавляется на основе его текста (см. QMenuBar для получения дополнительной информации).

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

Функции доступа:

QAction::MenuRole menuRole() const
void setMenuRole(QAction::MenuRole menuRole)

Сигнал уведомления:

void changed()

priority : Priority

Это свойство хранит приоритет действия в пользовательском интерфейсе.

Это свойство можно установить для указания, как действие должно быть упорядочено в пользовательском интерфейсе.

Например, когда панели инструментов имеют установленный режим Qt::ToolButtonTextBesideIcon, действия с LowPriority не будут отображать текстовые метки.

Функции доступа:

QAction::Priority priority() const
void setPriority(QAction::Priority priority)

shortcut : QKeySequence

Это свойство хранит основную комбинацию клавиш действия.

Действительные коды клавиш для этого свойства можно найти в Qt::Key и Qt::Modifier. Нет комбинации клавиш по умолчанию.

Функции доступа:

QKeySequence shortcut() const
void setShortcut(const QKeySequence &shortcut)

Сигнал уведомления:

void changed()

shortcutContext : Qt::ShortcutContext

Это свойство хранит контекст для комбинации клавиш действия.

Действительные значения для этого свойства можно найти в Qt::ShortcutContext. Значение по умолчанию — Qt::WindowShortcut.

Функции доступа:

Qt::ShortcutContext shortcutContext() const
void setShortcutContext(Qt::ShortcutContext context)

Сигнал уведомления:

void changed()

shortcutVisibleInContextMenu : bool

Это свойство указывает, следует ли отображать комбинацию клавиш действия в контекстном меню.

В некоторых приложениях может быть целесообразно отображать действия с комбинациями клавиш в контекстных меню. Если значение истинно, комбинация клавиш (если она валидна) отображается, когда действие отображается через контекстное меню; в противном случае, она не отображается.

По умолчанию используется значение атрибута Qt::AA_DontShowShortcutsInContextMenus приложения. Явное задание этого свойства переопределяет атрибут.

Функции доступа:

bool isShortcutVisibleInContextMenu() const
void setShortcutVisibleInContextMenu(bool show)

Сигнал уведомления:

void changed()

См. также shortcut и QCoreApplication::setAttribute().

statusTip : QString

Это свойство хранит подсказку состояния действия.

Подсказка состояния отображается во всех строках состояния, предоставляемых виджетом верхнего уровня действия.

По умолчанию это свойство содержит пустую строку.

Функции доступа:

QString statusTip() const
void setStatusTip(const QString &statusTip)

Сигнал уведомления:

void changed()

См. также setToolTip() и showStatusText().

text : QString

Это свойство хранит описательный текст действия.

Если действие добавляется в меню, элемент меню будет состоять из значка (если он есть), текста и комбинации клавиш (если она есть). Если текст не задан явно в конструкторе или с помощью setText(), текст значка описания действия используется в качестве текста. Текста по умолчанию нет.

Функции доступа:

QString text() const
void setText(const QString &text)

Сигнал уведомления:

void changed()

См. также iconText.

toolTip : QString

Это свойство хранит всплывающую подсказку действия.

Этот текст используется для всплывающей подсказки. Если всплывающая подсказка не задана, используется текст действия.

По умолчанию это свойство содержит текст действия.

Функции доступа:

QString toolTip() const
void setToolTip(const QString &tip)

Сигнал уведомления:

void changed()

См. также setStatusTip() и setShortcut().

visible : bool

Это свойство указывает, видно ли действие (например, в меню и строках инструментов).

Если visible истинно, действие видно (например, в меню и строках инструментов) и может быть выбрано пользователем; если visible ложно, действие не видно и не может быть выбрано пользователем.

Действия, которые не видны, не выделяются серым цветом; они вообще не отображаются.

По умолчанию это свойство равно true (действия видны).

Функции доступа:

bool isVisible() const
void setVisible(bool)

Сигнал уведомления:

void visibleChanged()

whatsThis : QString

Это свойство хранит текст справки «Что это?» для действия.

Текст «Что это?» используется для краткого описания действия. Текст может содержать форматированный текст. Текста «Что это?» по умолчанию нет.

Функции доступа:

QString whatsThis() const
void setWhatsThis(const QString &what)

Сигнал уведомления:

void changed()

См. также QWhatsThis.

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

QAction::QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr)

Создаёт действие с icon, text и parent. Если parent является группой действий, действие будет автоматически добавлено в группу.

Действие использует упрощенную версию текста (например, "&Вариант меню..." становится "Вариант меню") в качестве описательного текста для кнопок инструментов. Вы можете переопределить это, задав конкретное описание с помощью setText(). Тот же текст будет использоваться для всплывающих подсказок, если вы не укажете другой текст с помощью setToolTip().

QAction::QAction(const QString &text, QObject *parent = nullptr)

Создаёт действие с некоторым текстом и родительским объектом. Если родитель является группой действий, действие будет автоматически добавлено в группу.

Действие использует упрощенную версию текста (например, "&Вариант меню..." становится "Вариант меню") в качестве описательного текста для кнопок инструментов. Вы можете переопределить это, задав конкретное описание с помощью setText(). Тот же текст будет использоваться для всплывающих подсказок, если вы не укажете другой текст с помощью setToolTip().

QAction::QAction(QObject *parent = nullptr)

Создаёт действие с родительским объектом. Если родитель является группой действий, действие будет автоматически добавлено в группу.

Примечание: Аргумент parent является необязательным начиная с Qt 5.7.

[signal] void QAction::changed()

Этот сигнал испускается, когда действие изменилось. Если вас интересуют только действия в заданном виджете, вы можете следить за сигналом QWidget::actionEvent(), отправленным с QEvent::ActionChanged.

Примечание: Сигнал-уведомитель для свойства autoRepeat. Сигнал-уведомитель для свойства font. Сигнал-уведомитель для свойства icon. Сигнал-уведомитель для свойства iconText. Сигнал-уведомитель для свойства iconVisibleInMenu. Сигнал-уведомитель для свойства menuRole. Сигнал-уведомитель для свойства shortcut. Сигнал-уведомитель для свойства shortcutContext. Сигнал-уведомитель для свойства shortcutVisibleInContextMenu. Сигнал-уведомитель для свойства statusTip. Сигнал-уведомитель для свойства text. Сигнал-уведомитель для свойства toolTip. Сигнал-уведомитель для свойства whatsThis.

См. также QWidget::actionEvent().

[slot] void QAction::hover()

Это вспомогательный слот, который вызывает activate(Hover).

[signal] void QAction::hovered()

Этот сигнал испускается, когда действие выделено пользователем; например, когда пользователь задерживает курсор над пунктом меню, кнопкой на панели инструментов или нажимает сочетание клавиш действия.

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

[slot] void QAction::setDisabled(bool b)

Это вспомогательная функция для свойства enabled, которая полезна для соединений сигналов-слотов. Если b равно true, действие отключено; в противном случае оно включено.

[slot] void QAction::toggle()

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

[signal] void QAction::toggled(bool checked)

Этот сигнал испускается всякий раз, когда изменяется состояние галочки действия isChecked(). Это может быть результатом взаимодействия пользователя или вызова setChecked(). Поскольку вызов setChecked() изменяет QAction, он также испускает changed() в дополнение к toggled().

checked имеет значение true, если действие отмечено, или false, если действие не отмечено.

Примечание: Сигнал-уведомитель для свойства checked.

См. также activate(), triggered() и checked.

[slot] void QAction::trigger()

Это вспомогательный слот, который вызывает activate(Trigger).

[signal] void QAction::triggered(bool checked = false)

Этот сигнал испускается, когда действие активируется пользователем; например, когда пользователь нажимает пункт меню, кнопку на панели инструментов или сочетание клавиш действия, или когда вызван trigger(). Важно отметить, что он не испускается при вызове setChecked() или toggle().

Если действие имеет галочку, checked имеет значение true, если действие отмечено, или false, если действие не отмечено.

См. также activate(), toggled() и checked.

[virtual] QAction::~QAction()

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

QActionGroup *QAction::actionGroup() const

Возвращает группу действий для данного действия. Если никакая группа действий не управляет этим действием, то возвращается nullptr.

См. также QActionGroup и setActionGroup().

void QAction::activate(QAction::ActionEvent event)

Отправляет соответствующие сигналы для ActionEvent event.

Виджеты на основе действий используют этот API для активации QAction, чтобы вызвать испускание сигналов, а также для испускания собственных.

[since 6.0] QList<QObject *> QAction::associatedObjects() const

Возвращает список объектов, к которым было добавлено данное действие.

Эта функция была добавлена в Qt 6.0.

См. также QWidget::addAction() и QGraphicsWidget::addAction().

QVariant QAction::data() const

Возвращает пользовательские данные, заданные в QAction::setData.

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

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

Переопределяет: QObject::event(QEvent *e).

bool QAction::isSeparator() const

Возвращает true если это действие является разделителем; в противном случае возвращает false.

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

void QAction::setActionGroup(QActionGroup *group)

Устанавливает данную группу действий для group. Действие будет автоматически добавлено в список действий группы.

Действия в группе будут взаимно исключать друг друга.

См. также QActionGroup и actionGroup().

void QAction::setData(const QVariant &data)

Устанавливает внутренние данные действия на заданные data.

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

void QAction::setSeparator(bool b)

Если b равно true, данное действие будет рассматриваться как разделитель.

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

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

void QAction::setShortcut(const QKeySequence &shortcut)

Устанавливает shortcut в качестве единственного сочетания клавиш, вызывающего действие.

Примечание: Функция-сеттер для свойства shortcut.

См. также shortcut и setShortcuts().

void QAction::setShortcuts(const QList<QKeySequence> &shortcuts)

Устанавливает shortcuts в качестве списка сочетаний клавиш, вызывающих действие. Первый элемент списка является основным сочетанием клавиш.

См. также shortcuts(), shortcut и setShortcut().

void QAction::setShortcuts(QKeySequence::StandardKey key)

Устанавливает платформенно-зависимый список сочетаний клавиш, основанных на key. Результат вызова этой функции зависит от текущей платформы. Обратите внимание, что это действие может назначить более одного сочетания клавиш. Если требуется только основное сочетание клавиш, используйте setShortcut вместо этого.

См. также QKeySequence::keyBindings().

QKeySequence QAction::shortcut() const

Возвращает основное сочетание клавиш.

Примечание: Функция-геттер для сокращенного свойства.

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

QList<QKeySequence> QAction::shortcuts() const

Возвращает список сокращений, где основное сокращение является первым элементом списка.

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

bool QAction::showStatusText(QObject *object = nullptr)

Обновляет соответствующую строку состояния для пользовательского интерфейса, представленного объектом object, отправив событие QStatusTipEvent. Возвращает true если событие было отправлено, в противном случае возвращает false.

Если указан нулевой виджет, событие отправляется родительскому элементу действия.

См. также statusTip.

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

Spec-Zone.ru

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