Класс QActionGroup
Класс QActionGroup группирует действия вместе. Подробнее...
| Заголовок: | #include <QActionGroup> |
| qmake: | QT += widgets |
| Наследует: | QObject |
Типы публичного интерфейса
| перечисление | ExclusionPolicy { None, Exclusive, ExclusiveOptional } |
Свойства
- enabled : bool
- exclusionPolicy : QActionGroup::ExclusionPolicy
- visible : bool
Публичные функции
| QActionGroup(QObject *parent) | |
| virtual | ~QActionGroup() |
| QList<QAction *> | actions() const |
| QAction * | addAction(QAction *action) |
| QAction * | addAction(const QString &text) |
| QAction * | addAction(const QIcon &icon, const QString &text) |
| QAction * | checkedAction() const |
| QActionGroup::ExclusionPolicy | exclusionPolicy() const |
| bool | isEnabled() const |
| bool | isExclusive() const |
| bool | isVisible() const |
| void | removeAction(QAction *action) |
Свойства слотов
| void | setDisabled(bool b) |
| void | setEnabled(bool) |
| void | setExclusionPolicy(QActionGroup::ExclusionPolicy policy) |
| void | setExclusive(bool b) |
| void | setVisible(bool) |
Сигналы
| void | hovered(QAction *action) |
| void | triggered(QAction *action) |
Подробное описание
В некоторых ситуациях полезно группировать объекты QAction вместе. Например, если у вас есть действие Выравнивание по левому краю, действие Выравнивание по правому краю, действие Выравнивание по ширине и действие Центрирование, в любой момент времени должно быть активным только одно из этих действий. Один простой способ достижения этого — сгруппировать действия в группе действий.
Вот пример (из примера Меню):
alignmentGroup = new QActionGroup(this);
alignmentGroup->addAction(leftAlignAct);
alignmentGroup->addAction(rightAlignAct);
alignmentGroup->addAction(justifyAct);
alignmentGroup->addAction(centerAct);
leftAlignAct->setChecked(true); Здесь мы создаём новую группу действий. Поскольку группа действий по умолчанию является исключительной, в любой момент времени только одно из действий в группе может быть выбрано.
Группа QActionGroup излучает сигнал triggered() при выборе одного из её действий. Каждое действие в группе действий излучает свой сигнал triggered() как обычно.
Как указано выше, группа действий по умолчанию является исключительной; она гарантирует, что в любой момент времени активным может быть не более одного флажкового действия. Если вы хотите сгруппировать флажковые действия, не делая их исключительными, вы можете отключить исключительность, вызвав setExclusive(false).
По умолчанию активное действие исключительной группы не может быть снято с выбора. В некоторых случаях может быть полезно разрешить снятие с выбора всех действий, вы можете разрешить это, вызвав setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional).
Действия можно добавлять в группу действий с помощью addAction(), но обычно удобнее указать группу при создании действий; это гарантирует, что действия автоматически создаются с родителем. Действия можно визуально разделить друг от друга, добавив действие разделителя в группу; создайте действие и используйте функцию QAction's setSeparator() для того, чтобы оно считалось разделителем. Группы действий добавляются в виджеты с помощью функции QWidget::addActions().
См. также QAction.
Документация по типам членов
перечисление QActionGroup::ExclusionPolicy
Это перечисление определяет различные политики, которые могут быть использованы для управления тем, как группа выполняет исключительный выбор для флажковых действий.
| Константа | Значение | Описание |
|---|---|---|
QActionGroup::None |
0 |
Действия в группе могут выбираться независимо друг от друга. |
QActionGroup::Exclusive |
1 |
В любой момент времени может быть выбрано ровно одно действие. Это политика по умолчанию. |
QActionGroup::ExclusiveOptional |
2 |
В любой момент времени может быть выбрано не более одного действия. Действия также могут быть сняты с выбора. |
Это перечисление было введено или изменено в Qt 5.14.
См. также exclusionPolicy.
Документация по свойствам
enabled : bool
Это свойство определяет, включена ли группа действий
Каждое действие в группе будет включено или выключено, если оно не было явно выключено.
Функции доступа:
| bool | isEnabled() const |
| void | setEnabled(bool) |
См. также QAction::setEnabled().
exclusionPolicy : QActionGroup::ExclusionPolicy
Это свойство содержит политику исключительного выбора группы
Если exclusionPolicy установлено в Exclusive, только одно флажковое действие в группе может быть активным в любой момент времени. Если пользователь выберет другое флажковое действие в группе, выбранное им станет активным, а активное — неактивным. Если exclusionPolicy установлено в ExclusionOptional, группа является исключительной, но активное флажковое действие в группе может быть снято с выбора, оставив группу без выбранных действий.
Это свойство было введено в Qt 5.14.
Функции доступа:
| QActionGroup::ExclusionPolicy | exclusionPolicy() const |
| void | setExclusionPolicy(QActionGroup::ExclusionPolicy policy) |
См. также QAction::checkable.
visible : bool
Это свойство содержит значение, указывающее, отображается ли группа действий
Каждое действие в группе действий будет соответствовать состоянию видимости этой группы, если оно не было явно скрыто.
Функции доступа:
| bool | isVisible() const |
| void | setVisible(bool) |
См. также QAction::setEnabled().
Документация по функциям-членам
QActionGroup::QActionGroup(QObject *parent)
Конструктор группы действий для объекта parent.
Группа действий по умолчанию является взаимоисключающей. Вызовите setExclusive(false), чтобы сделать группу действий не взаимоисключающей. Чтобы сделать группу взаимоисключающей, но разрешить снятие отметки с активного действия, вызовите вместо этого setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional)
[signal] void QActionGroup::hovered(QAction *action)
Этот сигнал излучается, когда заданное действие action в группе действий выделяется пользователем; например, когда пользователь зависает курсором над пунктом меню, кнопкой на панели инструментов или нажимает сочетание клавиш действия.
См. также QAction::activate().
[slot] void QActionGroup::setDisabled(bool b)
Это вспомогательная функция для свойства enabled, которая полезна для соединений сигналов-слотов. Если b истинно, группа действий отключена; в противном случае она включена.
[slot] void QActionGroup::setExclusive(bool b)
Включить или отключить проверку исключения группы
Это вспомогательный метод, который вызывает setExclusionPolicy(ExclusionPolicy::Exclusive), когда b истинно, в противном случае setExclusionPolicy(QActionGroup::ExclusionPolicy::None).
См. также isExclusive() и QActionGroup::exclusionPolicy.
[signal] void QActionGroup::triggered(QAction *action)
Этот сигнал излучается, когда заданное действие action в группе действий активируется пользователем; например, когда пользователь щелкает по пункту меню, кнопке на панели инструментов или нажимает сочетание клавиш действия.
Подключитесь к этому сигналу для командных действий.
См. также QAction::activate().
[virtual] QActionGroup::~QActionGroup()
Уничтожает группу действий.
QList<QAction *> QActionGroup::actions() const
Возвращает список действий этой группы. Он может быть пустым.
QAction *QActionGroup::addAction(QAction *action)
Добавляет действие action в эту группу и возвращает его.
Обычно действие добавляется в группу, создавая его с группой в качестве родительского элемента, поэтому эта функция обычно не используется.
См. также QAction::setActionGroup().
QAction *QActionGroup::addAction(const QString &text)
Создаёт и возвращает действие с текстом text. Созданное действие является дочерним элементом этой группы действий.
Обычно действие добавляется в группу, создавая его с группой в качестве родителя, поэтому эта функция обычно не используется.
См. также QAction::setActionGroup().
QAction *QActionGroup::addAction(const QIcon &icon, const QString &text)
Создаёт и возвращает действие с текстом text и иконкой icon. Созданное действие является дочерним элементом этой группы действий.
Обычно действие добавляется в группу, создавая его с группой в качестве родительского элемента, поэтому эта функция обычно не используется.
См. также QAction::setActionGroup().
QAction *QActionGroup::checkedAction() const
Возвращает текущее отмеченное действие в группе или nullptr если нет отмеченных.
bool QActionGroup::isExclusive() const
Возвращает true, если группа взаимоисключающая
Группа является взаимоисключающей, если ExclusionPolicy равен Exclusive или ExclusionOptional.
void QActionGroup::removeAction(QAction *action)
Удаляет действие action из этой группы. Действие не будет иметь родителя в результате.
См. также QAction::setActionGroup().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qactiongroup.html