一、介绍
QAction类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作(action),这些action可以被放置在窗体的各个部件中。应用程序可以通过菜单,工具栏以及键盘快捷键来调用这个通用的命令。
二、应用场景
在图形用户界面应用程序中很多命令可以通过菜单选项、工具条按钮和键盘快捷键调用。因为同一个操作将会被执行,而与它的调用方法无关,并且因为菜单和工具条必须保持同步,所以提供一个操作这样的命令很有用。一个操作可以被添加到菜单和工具条中并且将会自动使它们同步。举个例子,在一个字处理软件中,如果用户在工具栏中按下了“加粗”按钮,那么菜单中的“加粗”选项就会自动被选中。
三、使用
QAction可以包括一个图标,菜单文本,快捷键,状态文本,"What`s This"文本以及一个tooltip。可以通过setIcon(),setIconText(),setShortCut(),setStatusTip(),setWhatsThis和SetToolTip()函数分别设置。
注意,只有将Actions添加到窗口部件上之后,我们才可以使用这些actions;当actions的快捷键是全局的时候,我们也必须先将actions添加到窗口部件上。一旦QAction被创建了,那么就必须将它添加到相关的菜单和工具栏上,然后将它们链接到实现相应action功能的槽函数上。例如:
QAction *NewBuildAction;
NewBuildAction = new QAction(MainWindow);
NewBuildAction->setObjectName(QStringLiteral("NewBuildAction"));
menu->addAction(NewBuildAction);
toolBar->addAction(NewBuildAction);
四、常用的方法总结
1. QAction::QAction( const QString & text, QObject * parent )
QAction类的构造函数之一,利用text,parent创建QAction对象。QAction对象一般为菜单中的菜单项,比如 "文件"菜单中"新建"选项就是一个QAction对象,上述构造函数中text成员变量即为菜单项所表示的内容。
用法:QAction *newAction = new QAction(tr("&New"),this);
2. void QAction::setIcon ( const QIcon& icon )
该函数可设置菜单项名称前的图标
用法:newAction->setIcon(QIcon(":/images/new.png"));
3. void QAction::setShortcut ( const QKeySequence & shortcut );
设置QAction对象执行的快捷键
用法:newAction->setShortcut(tr("Ctrl+N"));
4. void QAction::setStatusTip ( const QString & statusTip );
设置当鼠标移动到“动作”上时,状态栏显示的提示语。
5. void QAction::setVisible ( bool );
设置“动作”显示与否,当形参为true是,“动作”表示。
7. void QAction::triggered ( bool checked = false ) [signal]
此函数为信号,当用户触发此“动作”时,此信号发射。例如用户点击了菜单中的菜单项等。
此函数一般用法为:在QObject::connect()函数中作为信号参数,用于触发“动作”所对应执行的槽函数——实现“动作”的功能函数,例如:“新建”按钮被用户按下,所需要的功能可能是新建一个文档,那么新建一个文档的动作就在这个槽函数中实现。至于此信号函数中的形参暂时可以忽略。以后会在介绍QObject类中的静态方法connect()函数时详细解说。
8 . void QAction::setCheckable ( bool );
此函数用于设置QAction类中的私有变量: bool checkable ,此属性用以提供“动作”是否为复选动作,例如Qt Creator中“控件”菜单中的“全屏”菜单项即为复选动作菜单