返回介绍

QActionGroup类

发布于 2019-10-04 14:58:17 字数 5670 浏览 1460 评论 0 收藏 0

QActionGroup类把操作组合在一起。 详情请见……

#include <qaction.h>

继承了QAction。

所有成员函数的列表。

公有成员

  • QActionGroup ( QObject*parent, constchar*name = 0, boolexclusive = TRUE )
  • ~QActionGroup ()
  • void setExclusive ( bool )
  • bool isExclusive () const
  • void add ( QAction*action )
  • void addSeparator ()
  • virtual bool addTo ( QWidget*w )
  • void setUsesDropDown ( boolenable )
  • bool usesDropDown () const
  • void insert ( QAction*a ) (obsolete)

信号

  • void selected ( QAction * )

属性

  • bool exclusive- 操作组是否是排它切换的
  • bool usesDropDown- 组的操作是否被显示到操作组所被添加到的窗口部件的子窗口部件中

保护成员

  • virtual void addedTo ( QWidget*actionWidget, QWidget*container, QAction*a )
  • virtual void addedTo ( intindex, QPopupMenu*menu, QAction*a )

详细描述

QActionGroup类把操作组合在一起。

在一些情况下,把操作组合在一起是很有用的。例如,你有一个左对齐操作、右对齐操作和中间对齐操作,任何一个时间内只能有一个操作是被激活的,并且达到这一点的简单方法就是把这些操作组合在一个操作组中并且调用setExclusive(TRUE)。

操作组也可以像单一的单元那样被添加到菜单或者工具条中,操作组中的所有操作都被分别显示为菜单选项和工具条按钮。

这里是来自examples/textedit的实例:

        QActionGroup *grp = new QActionGroup( this );
        grp->setExclusive( TRUE );
        connect( grp, SIGNAL( selected( QAction* ) ), this, SLOT( textAlign( QAction* ) ) );

我们创建一个新的操作组并且调用setExclusive()来确保任何一个时间内组中只有一个操作可以被激活。然后我们把组的selected()信号连接到我们的textAlign()槽。

        actionAlignLeft = new QAction( tr( "Left" ), QPixmap( "textleft.xpm" ), tr( "&Left" ), CTRL + Key_L, grp, "textLeft" );
        actionAlignLeft->addTo( tb );
        actionAlignLeft->addTo( menu );
        actionAlignLeft->setToggleAction( TRUE );

我们创建一个左对齐操作,把它添加到工具条和菜单中并且使它成为切换操作。我们也用同样的方式创建中间对齐操作和右对齐操作。

在操作组中的操作像通常一样发射它们的activated()信号(对于切换操作是toggled())。

setExclusive()函数用来确保任何一个时间内只用一个操作被激活,它应该被用在toggleAction被设置为真的操作中。

操作组中的操作分别出现在菜单选项合工具条按钮中。对于排它操作组使用setUsesDropDown()可以把这些操作显示到操作组所被添加到的窗口部件的子窗口部件中。例如,这些操作可以出现在工具条中的组合框中或者菜单的子菜单中。

操作可以使用add()被添加到操作组汇总,但通常它们把操作组作为父对象来创建就可以了。操作可以使用addSeparator()来分割。操作组可以使用addTo()被添加到窗口部件中。

也可以参考主窗口和相关类和基本窗口部件。


成员函数文档

QActionGroup::QActionGroup ( QObject*parent, constchar*name = 0, boolexclusive = TRUE )

构造一个父对象为parent并且名称为name的操作组。

如果exclusive为真,组中只有一个切换操作可以被激活。

QActionGroup::~QActionGroup ()

销毁这个对象并且释放已经分配的资源。

void QActionGroup::add ( QAction*action )

把操作action添加到组中。

通常把这个组作为父对象创建的操作被添加到组中,所以这个函数通常不被用到。

也可以参考addTo()。

void QActionGroup::addSeparator ()

把分隔符添加到组中。

bool QActionGroup::addTo ( QWidget*w ) [virtual]

把这个操作组添加到窗口部件w中。

如果usesDropDown()为真并且exclusive为真(请参考setExclusive()),如果w是一个工具条的话,这些操作就会出现在一个组合框中或者w是一个菜单的话,它们就会作为一个子菜单出现。否则(默认)组中的操作将会分别被加入到窗口部件中。例如,如果窗口部件是菜单,这些操作将分别被显示为菜单选项,如果窗口部件是工具条的话,它们被分别显示为工具条按钮。

在操作组中的操作,特别是usesDropDown()为真的,建议设置它们的menuText()或text()属性。

应该在操作组被添加到窗口部件之前,所有的操作被添加到操作组中。如果在操作组被添加到窗口部件之后,被添加到操作组中的操作将不会被显示。

也可以参考exclusive、usesDropDown和removeFrom()。

实例:action/actiongroup/editor.cpp和themes/themes.cpp。

从QAction中重新实现的。

void QActionGroup::addedTo ( QWidget*actionWidget, QWidget*container, QAction*a ) [虚 保护]

当它在container中为这个子操作a创建一个窗口部件时(actionWidget),这个函数被addTo()调用。

void QActionGroup::addedTo ( intindex, QPopupMenu*menu, QAction*a ) [虚 保护]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

当它在弹出菜单menu中为这个子操作创建一个索引为index的菜单项时,这个函数被addTo()调用。

void QActionGroup::insert ( QAction*a )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

使用add()来替代,或者使用操作组作为父对象来创建操作更好。

bool QActionGroup::isExclusive () const

如果操作组是排它切换的,返回真,否则返回假。详细情况请参考“exclusive”属性。

void QActionGroup::selected ( QAction* ) [信号]

当切换操作改变状态时,这个信号从排它组中被发射。

参数是状态变为“开”的操作。

        QActionGroup * colors = new QActionGroup( this, "colors", TRUE );
        QObject::connect( colors, SIGNAL( selected( QAction * ) ),
                          this, SLOT( setFontColor( QAction * ) ) );

在这个实例中,我们把selected()信号连接到我们自己的setFontColor()槽,传递QAction所以我们可以直到哪个操作被用户选择。

(请参考QActionGroup排演。)

也可以参考exclusive和on。

实例:action/actiongroup/editor.cpp、chart/chartform.cpp和textedit/textedit.cpp。

void QActionGroup::setExclusive ( bool )

设置操作组是否排它切换。详细情况请参考“exclusive”属性。

void QActionGroup::setUsesDropDown ( boolenable )

设置组中的操作是否被显示为操作组所被添加到的窗口部件的子窗口部件为enable。详细情况请参考“usesDropDown”属性。

bool QActionGroup::usesDropDown () const

如果组的操作被显示为操作组所被添加到的窗口部件的子窗口部件,返回真,否则返回假。详细情况请参考“usesDropDown”属性。


属性文档

bool exclusive

这个属性保存的是操作组是否是排它切换。

如果exclusive为真,则任何一个时间内操作组中只有一个切换操作可以被激活。如果用户选择组中的其它切换操作,那么被用户选择的被激活,其它的变为非活动的。默认情况下这个属性为假。

也可以参考QAction::toggleAction。

通过setExclusive()设置属性值并且通过isExclusive()来获得属性值。

bool usesDropDown

这个属性保存的是组的操作是否被显示到操作组所被添加到的窗口部件的子窗口部件中。

被添加到工具条中的排它操作组会在组合框中显示它们的操作,操作的QAction::text和QAction::iconSet属性被显示。非排它组会被分别显示为工具按钮,显示它们的QAction::iconSet,并且——依赖于QMainWindow::usesTextLabel()——来显示text()属性。

在弹出菜单中,成员操作会被显示在子菜单中。

改变usersDropDown只影响subsequent调用addTo()。

这个属性的默认值为假。

通过setUsesDropDown()设置属性值并且通过usesDropDown()来获得属性值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文