主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QAction类参考

QAction类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作。 详情请见……

#include <qaction.h>

Inherits QObject

Inherited by QActionGroup

所有成员函数的列表。

公有成员

公有槽

信号

属性

保护成员


详细描述

QAction类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作。

在图形用户界面应用程序中很多命令可以通过菜单选项、工具条按钮和键盘快捷键调用。因为同一个操作将会被执行,而与它的调用方法无关,并且因为菜单和工具条必须保持同步,所以提供一个操作这样的命令很有用。一个操作可以被添加到菜单和工具条中并且将会自动使它们同步。例如,如果用户按下“加粗”工具条按钮,“加粗”菜单项将会自动被选中。

QAction可以包含图标、菜单文本、快捷键、状态条文本、这是什么文本和工具提示。它们可以分别通过setIconSet()、setText()、setMenuText()、setToolTip()、setStatusTip()、setWhatsThis()和setAccel()来设置。

操作可以是一个切换操作,例如,一个“加粗”工具条按钮,或者一个命令操作,例如“打开文件”来调用打开文件对话框。当切换操作的状态改变了,它发射toggled()信号。当命令操作和切换按钮被调用时,它们都发射activated()信号。使用setToggleAction()来设置操作的切换状态。如果要看操作是否是切换操作,请使用isToggleAction()。切换操作可以是“开”,isOn()返回真,或者“关”,isOn()返回假。

操作可以使用addTo()被添加到窗口部件(菜单或者工具条)中,并且使用removeFrom()来移除。

一旦QAction已经被创建,它应该被添加到相应的菜单或者工具条重并且然后连接到执行这个操作的槽。例如:

        fileSaveAction = new QAction( "Save File", QPixmap( filesave ),
                                      "&Save", CTRL+Key_S, this, "save" );
        connect( fileSaveAction, SIGNAL( activated() ) , this, SLOT( save() ) );

我们创建一个菜单文本为“保存(&S)”并且Ctrl+S为键盘快捷键的“文件保存”操作。我们连接fileSaveAction的activated()信号到我自己的save()槽。注意在这时还没有菜单或者工具条操作,接下来我们将添加它们:

        QToolBar * fileTools = new QToolBar( this, "file operations" );
        fileSaveAction->addTo( fileTools );
        QPopupMenu * file = new QPopupMenu( this );
        menuBar()->insertItem( "&File", file );
        fileSaveAction->addTo( file );

我们创建了一个工具条并把我们的fileSaveAction添加进去。类似的,我们创建一个菜单,添加一个顶级菜单项并且把我们的fileSaveAction添加进去。

(对于一个更详细的实例请参考有QAction特征的简单应用程序排演。)

我们建议把操作为它所在的窗口的子对象来创建。在绝大多数情况下操作是应用程序主窗口的子对象。

为了防止循环,不要在一个稍后要添加操作的窗口部件的子对象中创建操作。

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


成员函数文档

QAction::QAction ( QObject * parent, const char * name = 0, bool toggle = FALSE )

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

如果toggle为真,操作将是切换操作,否则它就是命令操作。

如果parentQActionGroup,新的操作会把自己插入到parent中。

为了使快捷键和状态提示能够工作,parent必须是一个窗口部件或者一个父对象为窗口部件的操作组。

QAction::QAction ( const QString & text, const QIconSet & icon, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = FALSE )

构造一个有如下属性的操作:描述为text、图标为icon、菜单文本为menuText并且键盘快捷键为accel。它是parent的子对象并且名称为name。如果toggle为真,操作将是切换操作,否则它就是命令操作。

如果parentQActionGroup,新的操作会把自己插入到parent中。

为了使快捷键和状态提示能够工作,parent必须是一个窗口部件或者一个父对象为窗口部件的操作组。

textaccel将会用于工具提示和状态提示,除非你使用setToolTip()和setStatusTip()为它们提供特定文本。

QAction::QAction ( const QString & text, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = FALSE )

这个构造函数的结果是没有图标的操作:描述为text、菜单文本为menuText并且键盘快捷键为accel。它是parent的子对象并且名称为name。如果toggle为真,操作将是切换操作,否则它就是命令操作。

如果parentQActionGroup,新的操作会把自己插入到parent中。

为了使快捷键和状态提示能够工作,parent必须是一个窗口部件或者一个父对象为窗口部件的操作组。

textaccel将会用于工具提示和状态提示,除非你使用setToolTip()和setStatusTip()为它们提供特定文本。

QAction::~QAction ()

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

QKeySequence QAction::accel () const

返回操作的快捷键。详细情况请参考“accel”属性。

void QAction::activated () [信号]

当操作被用户激活时,也就是说当用户点击菜单选项或者工具条按钮或者按下操作的快捷键组合时,这个信号被发射。

对于命令操作连接这个信号。对于切换按钮连接toggled()信号。

例如:action/application.cppchart/chartform.cppthemes/themes.cpp

bool QAction::addTo ( QWidget * w ) [虚]

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

现在操作可以被添加到QToolBarQPopupMenu窗口部件中。

被添加到菜单条中的操作会自动被显示为一个按钮,被添加到弹出菜单中的操作会自动显示为一个菜单项。

如果操作被添加成功,addTo()返回真,否则返回假。(如果w不是QToolBar或者QPopupMenu,操作将不会被添加并且将返回假。)

也可以参考removeFrom()。

例如:action/application.cppaction/toggleaction/toggleaction.cppchart/chartform.cpptextedit/textedit.cpp

QActionGroup中被重新实现。

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

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

void QAction::addedTo ( int index, QPopupMenu * menu ) [虚 保护]

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

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

QIconSet QAction::iconSet () const

返回操作的图标。详细情况请参考“iconSet”属性。

bool QAction::isEnabled () const

如果操作生效,返回真,否则返回假。详细情况请参考“enabled”属性。

bool QAction::isOn () const

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

bool QAction::isToggleAction () const

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

QString QAction::menuText () const

返回操作的菜单文本。详细情况请参考“menuText”属性。

bool QAction::removeFrom ( QWidget * w ) [虚]

从窗口部件w中移除操作。

如果操作被成功移除,返回真,否则返回假。

也可以参考addTo()。

void QAction::setAccel ( const QKeySequence & key ) [虚]

设置操作的快捷键为key。详细情况请参考“accel”属性。

void QAction::setEnabled ( bool ) [虚 槽]

设置操作是否生效。详细情况请参考“enabled”属性。

void QAction::setIconSet ( const QIconSet & ) [虚]

设置操作的图标。详细情况请参考“iconSet”属性。

void QAction::setMenuText ( const QString & ) [虚]

设置操作的菜单文本。详细情况请参考“menuText”属性。

void QAction::setOn ( bool ) [虚 槽]

设置切换按钮为开。详细情况请参考“on”属性。

void QAction::setStatusTip ( const QString & ) [虚]

设置操作的状态提示。详细情况请参考“statusTip”属性。

void QAction::setText ( const QString & ) [虚]

设置操作的描述文本。详细情况请参考“text”属性。

void QAction::setToggleAction ( bool ) [虚]

设置操作是否是切换按钮。详细情况请参考“toggleAction”属性。

void QAction::setToolTip ( const QString & ) [虚]

设置操作的工具提示。详细情况请参考“toolTip”属性。

void QAction::setWhatsThis ( const QString & ) [虚]

设置操作的“这是什么?”帮助文本。详细情况请参考“whatsThis”属性。

QString QAction::statusTip () const

返回操作的状态提示。详细情况请参考“statusTip”属性。

QString QAction::text () const

返回操作的描述文本。详细情况请参考“text”属性。

void QAction::toggle () [槽]

切换切换按钮的状态。

也可以参考ontoggled()和toggleAction

void QAction::toggled ( bool ) [信号]

当切换按钮改变状态时,这个信号被发射,命令操作和QActionGroups不发射toggled()。

参数表示新的状态,也就是如果切换按钮被打开,为真,或者如果它被关闭,为假。

依赖切换按钮是否被打开或者关闭来触发用户命令要把它连接到一个可以得到bool变量来识别状态的槽,例如:

        QMainWindow * window = new QMainWindow;
        QAction * labelonoffaction = new QAction( window, "labelonoff", TRUE );
        QObject::connect( labelonoffaction, SIGNAL( toggled( bool ) ),
                          window, SLOT( setUsesTextLabel( bool ) ) );

也可以参考activated()、toggleActionon

实例:action/toggleaction/toggleaction.cpp

QString QAction::toolTip () const

返回操作的工具提示。详细情况请参考“toolTip”属性。

QString QAction::whatsThis () const

返回操作的“这是什么?”帮助文本。详细情况请参考“whatsThis”属性。


属性文档

QKeySequence accel

这个属性保存的是操作的快捷键。

键代码可以在Qt::KeyQt::Modifier中找到。这里没有默认快捷键。

通过setAccel()设置属性值并且通过accel()来获得属性值。

bool enabled

这个属性保存的是操作是否生效。

失效的操作不能被用户选择。它们不从菜单/工具条上消失,但是会以某种方式表面它们不可用,例如,它们也许被变灰。

失效操作上的“这是什么?”帮助还是由被设置的QAction::whatsThis属性提供。

通过setEnabled()设置属性值并且通过isEnabled()来获得到属性值。

QIconSet iconSet

这个属性保存的是操作的图标。

这个图标会用在工具条按钮和菜单中菜单文本的左面。这里没有默认图标。

(请参考action/toggleaction/toggleaction.cpp实例。)

通过setIconSet()设置属性值并且通过iconSet()来获得属性值。

QString menuText

这个属性保存的是操作的菜单文本。

如果操作备添加为菜单中的一个菜单选项将会由图标(如果有的话)、菜单文本和快捷键(如果有的话)组成。如果没有菜单文本在构造函数或者使用setMenuText()中明确设置,操作的描述文本将用来作为菜单文本。这里没有默认菜单文本。

也可以参考text

通过setMenuText()设置属性值并且通过menuText()来获得属性值。

bool on

这个属性保存的是切换按钮是否为开。

对于命令操作和QActionGroup这个属性总是开的(真),setOn()对于它们没有效果。对于为真的操作,这个属性的默认值是关(假)。

也可以参考toggleAction

通过setOn()设置属性值并且通过isOn()来获得属性值。

QString statusTip

这个属性保存的是操作的状态提示。

这个状态提示将会被显示在操作的顶级父窗口部件提供的所有状态条上。

如果没有状态提示被定义,操作使用工具条提示文本。

这里没有默认的状态提示。

也可以参考statusTiptoolTip

通过setStatusTip()设置属性值并且通过statusTip()来获得属性值。

QString text

这个属性保存的是操作的描述文本。

如果QMainWindow::usesTextLabel为真,文本将会作为相应工具按钮上的文本。如果没有菜单文本和工具条提示被定义,它也可以作为相应的默认文本。这里没有默认的文本。

也可以参考menuTexttoolTipstatusTip

通过setText()设置属性值并且通过text()来获得属性值。

bool toggleAction

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

切换操作的状态为开/关中的一种。例如,“加粗”工具条按钮是开或者是开。不是切换操作的操作是命令操作,命令操作被简单执行。这个属性默认为假。

在一些情况下,切换操作的状态依赖于其它切换操作状态。例如,“左对齐”、“中间对齐”和“右对齐”切换操作是互斥的。为了达到互斥切换,把相关切换操作添加到QActionGroup中,并且把QActionGroup::exclusive属性设置为真。

通过setToggleAction()设置属性值并且通过isToggleAction()来获得属性值。

QString toolTip

这个属性保存得失操作的工具提示。

这个文本用于工具提示。如果没有状态提示被设置,工具提示会被用作状态提示。

如果没有指定工具提示,那么操作的文本被使用并且如果没有指定操作的文本没有被指定,那么描述文本将被用作工具提示。

这里没有默认工具提示文本。

也可以参考statusTipaccel

通过setToolTip()设置属性值并且通过toolTip()来获得属性值。

QString whatsThis

这个属性保存的是操作的“这是什么?”帮助文本。

“这是什么?”文本被用来提供操作的简要描述。这个文本中可以使用多信息文本(比如HTML标记——对于支持的标记得列表请参考QStyleSheet)。这里没有默认的“这是什么?”文本。

也可以参考QWhatsThis

通过setWhatsThis()设置属性值并且通过whatsThis()来获得属性值。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版