用到的头文件
#include <QMenu> #include <QToolBar> #include <QMenuBar> #include <QAction> QMenu *fileMenu, *editMenu, *helpMenu; //定义三个菜单选项 QToolBar *fileToolBar, *editToolBar;//两个工具栏 QAction *newAct, *cutAct, *copyAct, *pasteAct, *aboutQtAct;//五个动作
void newFileSlot();//一个槽函数,对应打开动作
.cpp文件
fileMenu = new QMenu(this);
editMenu = new QMenu(this);
helpMenu = new QMenu(this);
//填充菜单子节点
newAct = new QAction(QIcon( ":/images/new" ), tr( "new" ), this );
newAct->setShortcut(tr("Ctrl+N" ));
newAct->setStatusTip(tr("newFile" ));
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
cutAct = new QAction(QIcon( ":/images/cut" ), tr( "cut" ), this );
cutAct->setShortcut(tr("Ctrl+X" ));
cutAct->setStatusTip(tr("cutContent" ));
copyAct = new QAction(QIcon( ":/images/copy" ), tr( "copy" ), this );
copyAct->setShortcut(tr("Ctrl+C" ));
copyAct->setStatusTip(tr("copyContent" ));
pasteAct = new QAction(QIcon( ":/images/paste" ), tr( "paste" ), this );
pasteAct->setShortcut(tr("Ctrl+V" ));
pasteAct->setStatusTip(tr("pasteContent" ));
aboutQtAct = new QAction(tr( "about Qt" ), this );
aboutQtAct->setStatusTip(tr("about Qt information" ));
//填充菜单
fileMenu = menuBar()->addMenu(tr( "file" ));
fileMenu->addAction(newAct);
fileMenu->addSeparator();
editMenu = menuBar()->addMenu(tr("edit" ));
editMenu->addAction(cutAct);
editMenu->addAction(copyAct);
editMenu->addAction(pasteAct);
menuBar()->addSeparator();
helpMenu = menuBar()->addMenu(tr("help" ));
helpMenu->addAction(aboutQtAct);
//toolBar 工具条
fileToolBar = addToolBar(tr("create"));
fileToolBar->addAction(newAct);
editToolBar = addToolBar(tr("change"));
editToolBar->addAction(cutAct);
editToolBar->addAction(copyAct);
editToolBar->addAction(pasteAct);
connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
connect(newAct, &QAction::triggered, this, &MainWindow::newFileSlot);
槽函数定义:
//子菜单事件
void MainWindow::newFileSlot()
{
QMessageBox::warning(this,tr("Warning"),tr("Do you want to create new file?"),QMessageBox::Yes | QMessageBox::Default,QMessageBox::No);
}