Header:#include < QActionGroup >
qmake:QT += widgets
Inherits:QObject
Public Types
此enum指定可用于控制组如何对可检查操作执行排他检查的不同策略。
这个枚举在Qt 5.14中被引入或修改。
enum ExclusionPolicy { None, Exclusive, ExclusiveOptional }
Constant | Value | Description |
---|---|---|
QActionGroup::None | 0 | 组中的操作可以彼此独立地进行检查。 |
QActionGroup::Exclusive | 1 | 每次只能检查一个操作。这是默认策略。 |
QActionGroup::ExclusiveOptional | 2 | 每次最多只能检查一个动作。这些操作也可以是未检查的。 |
Properties
enabled : bool
exclusionPolicy : QActionGroup::ExclusionPolicy
visible : bool
Public Functions
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)
Public Slots
void setDisabled(bool b)
void setEnabled(bool)
void setExclusionPolicy(QActionGroup::ExclusionPolicy policy)
void setExclusive(bool b)
void setVisible(bool)
Signals
void hovered(QAction* action)
void triggered(QAction* action)
Detailed Description
在某些情况下,将QAction对象分组在一起是有用的。例如,如果您有一个左对齐操作、一个右对齐操作、一个对齐操作和一个居中操作,那么在任何时候,这些操作中应该只有一个是活动的。实现这一目标的一个简单方法是将这些操作分组在一个操作组中。
下面是一个例子(来自菜单示例):
alignmentGroup = new QActionGroup(this);
alignmentGroup->addAction(leftAlignAct);
alignmentGroup->addAction(rightAlignAct);
alignmentGroup->addAction(justifyAct);
alignmentGroup->addAction(centerAct);
leftAlignAct->setChecked(true);
- 这里我们创建一个新的操作组。由于默认情况下操作组是排他性的,因此每次只检查组中的一个操作。
- 当QActionGroup的一个操作被选中时,它会发出一个触发器()信号。操作组中的每个操作都会像往常一样发出自己的触发器()信号。
- 如上所述,默认情况下,操作组是排他性的;它确保在任何时候最多只有一个可检查的操作是活动的。如果你想对可检查的动作进行分组而不使它们具有排他性,你可以通过调用setExclusive(false)关闭排他性。
- 缺省情况下,不允许检查独占组的活动动作。在某些情况下,允许取消检查所有操作可能是有用的,您可以通过调用setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional)来允许这一点。
- 可以使用addAction()将操作添加到操作组,但是在创建操作时指定一个组通常更方便;这样可以确保自动创建带有父操作的操作。通过在组中添加分隔符,动作可以在视觉上彼此分离;创建一个动作,并使用QAction的setSeparator()函数将其视为一个分隔符。使用QWidget::addActions()函数将操作组添加到小部件中。
- See also QAction.
Property Documentation
enabled : bool
此属性保存操作组是否已启用
组中的每个操作将被启用或禁用,除非它已被显式禁用。
访问函数:
bool isEnabled() const
void setEnabled(bool)
See also QAction::setEnabled().
exclusionPolicy : QActionGroup::ExclusionPolicy
此属性保存组独占检查策略
如果exclusionPolicy设置为Exclusive,则操作组中任何时候只能有一个可检查的操作处于活动状态。如果用户在组中选择另一个可检查的操作,则他们选择的操作将变为活动操作,而活动操作将变为非活动操作。如果exclusionPolicy设置为ExclusionOptional,则该组是排他性的,但该组中的活动可检查操作可以被检查,使该组不检查任何操作。
这个属性是在Qt 5.14中引入的。
访问函数:
QActionGroup::ExclusionPolicy exclusionPolicy() const
void setExclusionPolicy(QActionGroup::ExclusionPolicy policy)
See also QAction::checkable.
visible : bool
此属性保存操作组是否可见
动作组中的每个动作都将匹配此组的可见状态,除非它已被显式隐藏。
访问函数:
bool isVisible() const
void setVisible(bool)
See also QAction::setEnabled().
Member Function Documentation
QActionGroup::QActionGroup(QObject *parent)
为父对象构造操作组。
缺省情况下,动作组为排他性。调用setExclusive(false)使操作组非排他性。要使组独占,但允许取消选中活动操作调用setExclusionPolicy(QActionGroup:: ExclusiveOptional)
[signal] void QActionGroup::hovered(QAction *action)
当用户突出显示动作组中的给定动作时,发出该信号;例如,当用户将光标停在菜单选项、工具栏按钮或按下操作的快捷键组合时。
See also QAction::activate().
[slot] void QActionGroup::setDisabled(bool b)
这是enabled属性的方便函数,对信号槽连接很有用。如果b为true,则动作组被禁用;否则为启用状态。
[slot] void QActionGroup::setExclusive(bool b)
启用或禁用组排除检查
这是一个方便的方法,当b为真时调用setExclusionPolicy(ExclusionPolicy::Exclusive),否则调用setExclusionPolicy(QActionGroup::ExclusionPolicy::None)。
See also isExclusive() and QActionGroup::exclusionPolicy.
[signal] void QActionGroup::triggered(QAction *action)
该信号在动作组中的给定动作被用户激活时发出;例如,当用户单击菜单选项、工具栏按钮或按下操作的快捷键组合时。
连接到这个信号进行命令操作。
See also QAction::activate().
[virtual] QActionGroup::~QActionGroup()
销毁函数。
QList<QAction *> QActionGroup::actions() const
返回此组的操作列表。这可能是空的。
QAction *QActionGroup::addAction(QAction *action)
向该组添加操作,并返回操作。
通常情况下,将一个操作添加到组中是通过将组作为父组来创建的,因此通常不使用此函数。
See also QAction::setActionGroup().
QAction *QActionGroup::addAction(const QString &text)
创建并返回一个带有文本的操作。新创建的操作是此操作组的子操作。
通常情况下,通过将组作为父组创建操作来将其添加到组中,因此通常不使用此函数。
See also QAction::setActionGroup().
QAction *QActionGroup::addAction(const QIcon &icon, const QString &text)
创建并返回一个带有文本和图标的操作。新创建的操作是此操作组的子操作。
通常情况下,将一个操作添加到组中是通过将组作为父组来创建的,因此通常不使用此函数。
See also QAction::setActionGroup().
QAction *QActionGroup::checkedAction() const
返回组中当前选中的操作,如果未选中则返回nullptr。
bool QActionGroup::isExclusive() const
如果组是排他的,则返回true
当ExclusionPolicy为exclusive或ExclusionOptional时,该组是排他性的。
void QActionGroup::removeAction(QAction *action)
从该组中删除操作。因此,该操作将没有父操作。
See also QAction::setActionGroup().