Qmenu和Qaction

来源:互联网 发布:9377皇图翅膀进阶数据 编辑:程序博客网 时间:2024/05/19 22:58

简介

如下是实现一个菜单栏及下拉菜单的制作:
在mainwindow.h中添加
class QAction;
class QMenu;
在pro中添加 QT += widgets
QMenu类作为菜单栏,QAction类作为点击菜单栏的下拉菜单使用 QMenu类对象的addaction(QAction类的对象)来添加

代码片段

 //mainwindow.h---------------------------------------------------------------------ifndef MAINWINDOW_Hdefine MAINWINDOW_Hinclude //#include //包含QPlainTextEdit  QAction  QMenu  才能够使用这个类class QPlainTextEdit;class QAction;class QMenu;class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(); ~MainWindow();private slots: void test();private:    void createActions(); void createMenus(); //文本框 QPlainTextEdit *textEdit; //file菜单 QMenu * fileMenu; //定义了file的下拉菜单为 new  open  save  saveAS  exit QAction *newAct; QAction *open; QAction *Save; QAction *saveAs; QAction *exit;};//mainwindow.cpp---------------------------------------------------------------------MainWindow::MainWindow(){ //创建一个文本编辑器 textEdit = new QPlainTextEdit; //设置文本编辑器为中心位置 setCentralWidget(textEdit); //首先创建file下拉的菜单栏 createActions(); //再来创建菜单目录,把下拉菜单的内容addaction加入到menu中 createMenus();}MainWindow::~MainWindow(){}void MainWindow::test(){} //file下拉菜单 名字为 new  open  Save  saveAs exit new.png为图标 添加了快捷键  以及添加点击这个下拉菜单所条用的槽函数,这里使用test作为测试使用void MainWindow::createActions(){" newAct = new QAction(QIcon(":/image/new.png"), tr("&New"), this); newAct->setShortcuts(QKeySequence::New);  //为action设置快捷键ctrl+N newAct->setStatusTip(tr("Create a new file")); //设置提示 connect(newAct, SIGNAL(triggered()), this, SLOT(test())); //New点击事件调用test " open = new QAction(QIcon(":/image/open.png"), tr("&Open"), this); open->setShortcuts(QKeySequence::Open); open->setStatusTip(tr("open a new file")); connect(open, SIGNAL(triggered()), this, SLOT(test())); //点击Open事件调用test Save = new QAction(QIcon(":/image/save.png"), tr("&Save"), this); Save->setShortcuts(QKeySequence::Save); Save->setStatusTip(tr("Save a new file")); connect(Save, SIGNAL(triggered()), this, SLOT(test())); //点击Save事件调用test saveAs = new QAction( tr("&SaveAs"), this); saveAs->setShortcuts(QKeySequence::SaveAs); newAct->setStatusTip(tr("SaveAs a new file")); connect(saveAs, SIGNAL(triggered()), this, SLOT(test())); //saveAS点击事件调用test  exit = new QAction( tr("&exit"), this); exit->setShortcuts(QKeySequence::Close); exit->setStatusTip(tr("exit a new file")); connect(exit, SIGNAL(triggered()), this, SLOT(close()));   //点击exit事件调用test}void MainWindow::createMenus(){ //创建一个name为file的菜单栏 fileMenu = menuBar()->addMenu(tr("&File")); //在这个菜单栏添加action即下拉菜单 fileMenu->addAction(newAct); fileMenu->addAction(open); fileMenu->addAction(Save); fileMenu->addAction(saveAs); //添加一个分割器 fileMenu->addSeparator(); //推出下拉菜单 fileMenu->addAction(exit);}

总结

QMenuBar:就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

QMenu:菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

用一个简单的图来表示三者关系:

就是这样

1 0