它添加了很多动作QAction,并用自身组成了菜单栏QMenuBar上的菜单,当然也可用于基它地方,如上下文菜单等。
公有函数如下:
aboutToHide:此信号在菜单对用户隐藏之前发出。
aboutToShow:此信号在菜单显示给用户之前发出。
hovered:此信号在菜单动作突出显示时发出;该动作是导致信号发出的动作。通常用于更新状态信息。
triggered:此信号在触发此菜单中的 *** 作时发出。该动作是导致信号发出的动作。
通常,每个菜单动作的已触发信号连接到其自己的自定义槽,但有时您会希望将多个动作连接到单个槽,例如,当您有一组密切相关的动作时,例如“左对齐”、“中对齐”、“右对齐”。
注意:此信号是为层次结构中的主父菜单发出的。因此,只需要将父菜单连接到插槽;不需要连接子菜单。
静态成员函数,可用它将一些actions组合成一个菜单
它是主窗口存放菜单的地方。
在windows上可认为它就是那个大理石颜色的一栏
函数如下:
简单测试示例如下:
1、创建菜单里可以通过menuBar方法,这个方法好像是QWiget的方法QMenuBar *mBar = menuBar()
2、添加菜单
QMenu * menu = mBar->addMenu("文件")
3、添加菜单项
QAction * action = menu->addAction("新建")
4、给QAction创建点击事件
connect(action ,&QAction::triggered ,this ,[=](){
//里面写点击后执行的函数就行
})
5、设置QAction不可用
Solution 1 :给一个 QWidget 添加 QActions,设置QWidget 的 contextMenuPolicy 属性为 Qt::ActionsContextMenu 值,使得窗口菜单以这些添加的 QActions 为菜单项组成一个右键菜单。1:MyWidget::MyWidget(QWidget *parent)2:: QWidget(parent)3:{4:setWindowTitle(tr(Context Menu Show 1))5://为窗口添加QActions6:addAction(newQAction(tr(&Open),this))7:addAction(newQAction(QIcon(:/images/mark.png), tr(&Mark),this))8:addAction(newQAction(tr(&Quit),this))9://设置contextMenuPolicy属性值为 '以Actions为d出菜单的菜单项组成菜单'10:setContextMenuPolicy(Qt::ActionsContextMenu)11:}效果:Solution 2 :重写 QWidget 的被保护的虚函数void QWidget::contextMenuEvent (QContextMenuEvent*event)[virtual protected],设置QWidget 的 contextMenuPolicy 属性为 Qt::DefaultContextMenu 值,其实默认就是这个值,不用显示设置。1:MyWidget::MyWidget(QWidget *parent)2:: QWidget(parent)3:{4:setWindowTitle(tr(Context Menu Show 2))5:setContextMenuPolicy(Qt::DefaultContextMenu)//其实不用设置,默认就是这个值6:}7:8:9:voidMyWidget::contextMenuEvent(QContextMenuEvent *event)10:{11:QMenu *menu =newQMenu(this)12:menu-addAction(newQAction(tr(&Open), menu))13:menu-addAction(newQAction(QIcon(:/images/mark.png), tr(&Mark), menu))14:menu-addAction(newQAction(tr(&Quit), menu))15:menu-move(cursor().pos())//让菜单显示的位置在鼠标的坐标上16:menu-show()17:}效果:上面直接是在 contextMenuEvent 函数体里面 new 了个菜单和一些菜单项,这是为了演示。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)