QAction类提供了一个可以嵌入到界面里面的抽象用户事件接口。用户希望可以在不同的界面中,通过相同的命令来起到同样的效果,在QT应用程序里面,许多通用命令可以通过菜单、工具栏按钮和快捷方式来调用,每个动作(action)对应一个命令。
动作可以添加到菜单和工具栏中,并且自动保持同步。例如,在一个字符操作程序中,如果用户选择了粗体,那么粗体菜单项会自动被选择。动作可以单独以类的形式存在,也可以在构建菜单的时候创建;QMenu类提供了一个函数去创建一个适合本菜单项的动作(action)。
动作可以通过 QWidget::addAction() 或 QGraphicsWidget::addAction()函数来添加到界面中。一个action也只有嵌入到界面中才能被调用(也可以是一个全局快捷方式 Qt::ApplicationShortcut 和Qt::ShortcutContext)。
一当一个动作创建完成,应该被添加到相关的菜单或工具栏中,通过槽来调用对应的函数,例如:
openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
openAct->setShortcuts(QKeySequence::Open);
openAct->setStatusTip(tr("Open an existing file"));
connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
fileMenu->addAction(openAct);
fileToolBar->addAction(openAct);
推荐把动作当作调用界面的一部分,一般作为应用程序主界面的一部分。