QWindow实际上是在QWidget基础上派生出,自带了菜单栏,工具栏,状态栏等等的一个复杂的QWidget
创建项目
首先,创建项目时,从原来的QWidget变更为QMainWindow
菜单栏
获取菜单栏
QMainWindow自带一个菜单栏,通过其成员函数menuBar()可获得到菜单栏的对象指针。
菜单栏的类为QMenuBar,需要在开头include它,然后在MainWindow构造函数里写
QMenuBar *mBar=menuBar();
添加菜单
QMenuBar菜单栏中可以添加菜单,使用QmenuBar对象中的addMenu成员函数,它返回一个QMenu对象指针。
QMenu *pFile=mBar->addMenu("文件");
添加菜单项
QMenu菜单中可以添加菜单项,使用QMenu对象中的addAction成员函数,它返回一个QAction对象指针
QAction *pNew=pFile->addAction("新建");
添加菜单项的触发事件
connect(pNew,&QAction::triggered,[=](){
qDebug("新建被按下");
});
注意lambda表达式需要在配置文件中写入CONFIG += C++11
运行结果:
当我们按下新建时,将触发控制台输出代码如下,
添加分割线
pFile->addSeparator();//添加分割线
更简单的菜单项添加
connect(pFile->addAction("打开"),&QAction::triggered,[=](){
dDebug("打开被按下");
});
上述代码可一步添加菜单项并绑定信号和槽函数。
工具栏
如下如,上面是菜单栏,下面则是工具栏
image.png
一般地,一个程序中菜单栏唯一,工具栏不唯一,所以在QWindow中,自带成员函数addToolBar可自由添加工具栏
添加工具栏
QToolBar *toolBar=addToolBar("toolBar");
添加菜单项
toolBar->addAction(pNew);
由此可以看出,工具栏和菜单项类似,也可添加动作
<