用几个控件实现简单的菜单栏操作(类记事本的上的菜单栏)
1.新建一个有ui界面的工程,其基类为mainwindow
2.向工程文件中添加资源文件,用以存放图片
3.代码实现
mainwindow.h
新添加如下头文件
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>
class类中新建菜单定义
private:
//新建
QMenu *fileMenu, *editMenu, *helpMenu;
QToolBar *fileToolBar; //新建两个工具栏,用以存放四个菜单动作
QToolBar *editToolBar;
QAction *newAct;
QAction *cutAct;
QAction *copyAct;
QAction *pasteAct;
QAction *aboutQtAct;
private slots:
void newFile(); //实例一个简单的槽
mainwindow.cpp
构造函数中添加如下代码实现
//实例菜单
fileMenu = new QMenu(this);
editMenu = new QMenu(this);
helpMenu = new QMenu(this);
//填充菜单子节点
newAct = new QAction(QIcon( ":/images/file/new.png" ), tr( "新建" ), this );
newAct->setShortcut(tr("Ctrl+N" )); //快捷键
newAct->setStatusTip(tr("新建文件" )); //状态提示
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
cutAct = new QAction(QIcon( ":/images/file/cut.png" ), tr( "剪切" ), this );
cutAct->setShortcut(tr("Ctrl+X" ));
cutAct->setStatusTip(tr("剪切内容" ));
copyAct = new QAction(QIcon( ":/images/file/复制.png" ), tr( "复制" ), this );
copyAct->setShortcut(tr("Ctrl+C" ));
copyAct->setStatusTip(tr("复制内容" ));
pasteAct = new QAction(QIcon( ":/images/file/粘贴.png" ), tr( "粘贴" ), this );
pasteAct->setShortcut(tr("Ctrl+V" ));
pasteAct->setStatusTip(tr("粘贴内容" ));
aboutQtAct = new QAction(QIcon(":/images/file/about.png"),tr( "关于 Qt" ), this );
aboutQtAct->setStatusTip(tr("关于 Qt 信息" ));
connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
//填充菜单
fileMenu = menuBar()->addMenu(tr( "文件" ));
fileMenu->addAction(newAct);
fileMenu->addSeparator();
editMenu = menuBar()->addMenu(tr("编辑" ));
editMenu->addAction(cutAct);
editMenu->addAction(copyAct);
editMenu->addAction(pasteAct);
menuBar()->addSeparator();
helpMenu = menuBar()->addMenu(tr("帮助" ));
helpMenu->addAction(aboutQtAct);
//toolBar 工具条
//fileTooBar添加
fileToolBar = addToolBar(tr("新建"));
fileToolBar->addAction(newAct);
//editToolBar添加
editToolBar = addToolBar(tr("修改"));
editToolBar->addAction(cutAct);
editToolBar->addAction(copyAct);
editToolBar->addAction(pasteAct);
}
MainWindow::~MainWindow()
{
delete ui;
}
//子菜单事件
void MainWindow::newFile()
{
QMessageBox::warning(this,tr("Warning"),
tr("创建新文件?"),
QMessageBox::Yes | QMessageBox::Default,
QMessageBox::No);
}
4.效果展示