QActionGroup的应用

 C++ GUI Programming with Qt 4一书的第三章第二节讲到了如果要创建多选一性质的动作可使用QActionGroup类,但并没有作详细说明,这里作个简要介绍:

QActionGroup的作用就是将多个相似的动作组合在一起。这里我们假设要对一组文字作对齐操作,有Left Align, Right Align, Just Align, Center Align四个动作。很明显,一次只能使用一种对齐方式,也即只能四选一,也是我们使用QActionGroup,这也是最简单的方法。

alignmentGroup = new QActionGroup(this);

alignmentGroup->addAction(leftAlignAct);
alignmentGroup->addAction(rightAlignAct);
alignmentGroup->addAction(justifyAct);
alignmentGroup->addAction(centerAct);
leftAlignAct->setChecked(true);

利用上面的代码我们创建了一个QActionGroup:alignmentGroup,由于QActionGroup默认为单选模式,同一时间只能选择一个选项。

当其中的选项被选中时,相应的动作发出triggered()信号,这里要注意,虽然此动作存在选与不选两种状态,貌似应该使用toggled()信号,但重新选择确不能实现开关状态间的切换,其实与触发更为接近,应用triggered()。

上面我们已经讲到QActionGroup默认为单选模式,一次只能选择一个选项。如果你想使用多选模式,将每个选项看作开关按纽,则可调用 setExclusive(false)函数进行切换。

本文的例子中我们使用addAction()函数将action添加至actionGroup,但还有一种更为简便的方法,即是在创建动作(action)的时候就将他们作好分组,这样可确保每一个动作均有一个父对象。还有一点必须注意:与单个的动作不同,在将actionGroup添加到控件时,要使用addActions()函数,而不是addAction()函数。

你可能感兴趣的:(c,action,qt)