我的Qt学习笔记 4 如何在 QWidget 窗口上弹出右键菜单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Qt学习笔记 4 如何在 QWidget 窗口上弹出右键菜单相关的知识,希望对你有一定的参考价值。

参考技术A 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为弹出菜单的菜单项组成菜单'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 了个菜单和一些菜单项,这是为了演示。本回答被提问者采纳

以上是关于我的Qt学习笔记 4 如何在 QWidget 窗口上弹出右键菜单的主要内容,如果未能解决你的问题,请参考以下文章

Qt qwidget 瞬间出现和消失

Qt学习笔记11.自定义控件 Customize the Widget

QT QMainWindow窗口中添加 QWidget容器类 应该怎么添加?

QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)

qt 学习梳理

Qt学习之路2---窗口组件及窗口类型