目录
[二、 完全通过代码实现菜单](#二、 完全通过代码实现菜单)
前言:
基于QMainWindow,两种方式实现菜单:通过直接添加ui控件快速添加菜单和完全通过代码实现菜单,前者极为快速方便,后者更能练习技能
展示效果:
技能:
菜单栏的三个成分QMenuBar、QMenu、QAction使用
内容:
两种方式都是基于QMainWindow,所以创建工程的时候需要选择基类QMainWindow
在Qt中,菜单的各个部分名称如下图
上面照片来自参考链接,讲的很好,可以直接点参考链接去看哦
法一、ui中直接添加控件实现
如果是基于QMainWindow,直接点开ui文件,上面已经提供了QMenuBar
直接双击修改名称就可以
重要的是,一定要回车保存才行,根据上面介绍,这个叫QMenu
当前QMenu回车后会出来这个样子,或者单机一个QMenu也是
这里继续就可以添加QAction
但是在这里无法直接输入中文,上面的QMenu是可以的
解决方法是:先输入一个英文名称创造出来一个QAction,点下面的信号编辑器中双击"文本",这里编辑名称就可以正常输入中文
在这里编辑功能很多,比如图标和快捷方式,快捷方式设置是从键盘读取按键,可以组合。详细内容看参考链接
点击QAction旁边的小图标可以创建进一步的QAction,方法同理
创建完界面后要实现槽函数,在Qt creator中可以直接右键Action编辑器中的QAction,有熟悉的"转到槽",后面的内容就和之前一样了。如果是用的VS2022联机的Qt designer或者不想用直接转到槽,可以看我之前的文章->在VS2022中使用QT
法二、 完全通过代码实现菜单
首先在头文件中在Qt类中添加私有成员,这里是两个QMenu,两个QAction
cpp
#include<QMenu>
#include<QMenuBar>
#include<QAction>
#include<QFileDialog>
private:
QMenu *pMenuFile;
QMenu *pMenuEdit;
QAction *pActNew;
QAction *pActOpen;
在QMainWindow的构造函数里面,创建、添加合并,也差不多看得懂。详情看参考链接讲得好
cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
pMenuFile= new QMenu("文件(&File)");//快捷键ALT+F &后字母表示快捷键
pMenuEdit= new QMenu("编辑(&Edit)");//快捷键ALT+E
ui->menubar->addMenu( pMenuFile);
ui->menubar->addMenu( pMenuEdit);
pActNew=new QAction("新建");
pActNew->setShortcut(Qt::CTRL|Qt::Key_N);
pActOpen=new QAction("打开");
pActOpen->setShortcut(Qt::CTRL|Qt::Key_O);
pMenuFile->addAction(pActNew);
pMenuFile->addAction(pActOpen);
//下面是手动连接槽函数的
//connect(pActOpen,SIGNAL(triggered(bool)),this,SLOT(OpenClicked()));
//connect(pActNew,SIGNAL(triggered(bool)),this,SLOT(NewClicked()));
}
参考:
【Qt学习系列】14.Qt程序菜单(3)这个是实现右键菜单的,欢迎大家学习