一、QAction概述
QAction是Qt中的一个用户界面动作类,通俗来说,它是菜单栏、工具栏等控件中的一项选项,用户点击这个选项,可以执行与之关联的操作。
QAction可以关联到多种不同的操作中,如执行一个操作、展示一个信息框、打开一个文件、开启一个新的窗口等等。它对于应用程序开发非常重要,可以用于为用户提供各种行为和功能。
QAction的主要功能就是在各种用户界面控件,如菜单栏、工具栏、上下文菜单等中提供选项功能。
二、QAction的属性和方法
QAction的常用属性如下:
text:选项的文本
icon:选项的图标
shortcut:快捷键
statusTip:提示信息
QAction的常用方法如下:
setObjectName:设置QAction的对象名称
isEnabled:是否可用
setChecked:是否选中
setShortcut:设置快捷键
setMenu:为QAction添加菜单
setToolTip:设置提示信息
三、QAction的使用方法
1、创建QAction并添加到菜单栏中:
// 创建QAction
QAction *actionNew = new QAction(tr("新建"), this);
actionNew->setShortcut(QKeySequence::New);
connect(actionNew, &QAction::triggered, this, &MainWindow::newFile);
// 添加到菜单栏
QMenu *fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->addAction(actionNew);
2、创建QAction并添加到工具栏中:
// 创建QAction
QAction *actionSave = new QAction(QIcon(":/images/save.png"), tr("保存"), this);
actionSave->setShortcut(QKeySequence::Save);
connect(actionSave, &QAction::triggered, this, &MainWindow::saveFile);
// 添加到工具栏
QToolBar *fileToolBar = addToolBar(tr("文件工具栏"));
fileToolBar->addAction(actionSave);
3、为QAction添加子菜单:
QAction *actionFont = new QAction(tr("字体"), this);
QMenu *submenu = new QMenu(this);
submenu->addAction(tr("宋体"));
submenu->addAction(tr("楷体"));
submenu->addAction(tr("黑体"));
actionFont->setMenu(submenu);
四、QAction的实际应用
下面是一个完整的QAction的实际应用例子,可以从中了解QAction的使用方法。
// 创建QAction
QAction *actionNew = new QAction(tr("新建"), this);
actionNew->setShortcut(QKeySequence::New);
connect(actionNew, &QAction::triggered, this, &MainWindow::newFile);
QAction *actionOpen = new QAction(tr("打开"), this);
actionOpen->setShortcut(QKeySequence::Open);
connect(actionOpen, &QAction::triggered, this, &MainWindow::openFile);
QAction *actionSave = new QAction(QIcon(":/images/save.png"), tr("保存"), this);
actionSave->setShortcut(QKeySequence::Save);
connect(actionSave, &QAction::triggered, this, &MainWindow::saveFile);
QAction *actionCut = new QAction(tr("剪切"), this);
actionCut->setShortcut(QKeySequence::Cut);
connect(actionCut, &QAction::triggered, this, &MainWindow::cut);
QAction *actionCopy = new QAction(tr("复制"), this);
actionCopy->setShortcut(QKeySequence::Copy);
connect(actionCopy, &QAction::triggered, this, &MainWindow::copy);
QAction *actionPaste = new QAction(tr("粘贴"), this);
actionPaste->setShortcut(QKeySequence::Paste);
connect(actionPaste, &QAction::triggered, this, &MainWindow::paste);
// 添加到菜单栏
QMenu *fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->addAction(actionNew);
fileMenu->addAction(actionOpen);
fileMenu->addAction(actionSave);
QMenu *editMenu = menuBar()->addMenu(tr("编辑"));
editMenu->addAction(actionCut);
editMenu->addAction(actionCopy);
editMenu->addAction(actionPaste);
// 添加到工具栏
QToolBar *fileToolBar = addToolBar(tr("文件工具栏"));
fileToolBar->addAction(actionNew);
fileToolBar->addAction(actionOpen);
fileToolBar->addAction(actionSave);
QToolBar *editToolBar = addToolBar(tr("编辑工具栏"));
editToolBar->addAction(actionCut);
editToolBar->addAction(actionCopy);
editToolBar->addAction(actionPaste);