QMenu和QMenuBar是Qt中的菜单类和菜单栏类,其中,菜单QMenu挂载在菜单栏QMenuBar上。本文主要总结QMenu的三种常用用法,分别为常规用法、继承QWidgetAction自定义菜单项用法、将QMenu当QWidget挂载一个布局用法。
下面对每种用法进行原理讲解和代码总结。
一、常规用法
1.1原理讲解
QMenuBar是菜单栏,QMenu是菜单,菜单QMenu是挂载在菜单栏QMenuBar上的,相当于菜单栏QMenuBar是一个容器,菜单QMenu是容器中的其中一项,或者说QMenuBar内的子集全部是菜单QMenu,如下图所示:
1.2添加常规菜单栏和菜单用法代码
#include <QMenu>
#include <QAction>
#include <QMenuBar>
#include <QVBoxLayout>
void Widget::on_pushButton_clicked()
{
QMenu *menu=new QMenu("菜单:常规");
QAction *action1=new QAction(QIcon(":/resource/image/向右箭头.jpg"),"action1");
QAction *action2=new QAction(QIcon(":/resource/image/向右箭头.jpg"),"action2");
QList<QAction*> list;
list.append(action1);
list.append(action2);
menu->addActions(list);
QMenuBar *menuBar=new QMenuBar;
menuBar->addMenu(menu);
menuBar->addSeparator(); //分隔栏
ui->verticalLayout->addWidget(menuBar);
}
二、继承QWidgetAction自定义菜单项用法
2.1原理讲解
当我们需要自定义菜单里面的每一项时,也就是需要自定义的菜单项内容。菜单项就是菜单里面的子集,如下图所示:
此时我们希望添加的action最好是一个QWidget,那样