zoukankan      html  css  js  c++  java
  • 如何在 QWidget 窗口上弹出右键菜单

    Title :

    • QWidget
    • 窗口上弹出右键菜单的两个方法

    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:     //为窗口添加QActions
       6:     addAction(new QAction(tr("&Open"), this));
       7:     addAction(new QAction(QIcon(":/images/mark.png"), tr("&Mark"), this));
       8:     addAction(new QAction(tr("&Quit"), this));
       9:     //设置contextMenuPolicy属性值为 '以Actions为弹出菜单的菜单项组成菜单'
      10:     setContextMenuPolicy(Qt::ActionsContextMenu);
      11: }
    效果:
    2012-07-05_1416

    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: void MyWidget::contextMenuEvent(QContextMenuEvent *event)
      10: {
      11:     QMenu *menu = new QMenu(this);
      12:     menu->addAction(new QAction(tr("&Open"), menu));
      13:     menu->addAction(new QAction(QIcon(":/images/mark.png"), tr("&Mark"), menu));
      14:     menu->addAction(new QAction(tr("&Quit"), menu));
      15:     menu->move(cursor().pos()); //让菜单显示的位置在鼠标的坐标上
      16:     menu->show();
      17: }

    效果:

    2012-07-05_1427

    上面直接是在 contextMenuEvent 函数体里面 new 了个菜单和一些菜单项,这是为了演示。实际在写程序的过程中,我们往往会把这些 QAction 和 QMenu 声明为私有的成员变量,在构造 Widget 的时候,或者第一次调用 contextMenuEvent 时初始化它们,把它们的某些信号(signal)与其它组件的某些槽(slot)连接以处理一些事件,比如说单击上面演示的Open项目会弹出一个对话框,单击Quit会退出程序等等。
  • 相关阅读:
    带横线圆圈标题
    锚点点击导航 跳转到相应位置,样式随之变化
    导航随滚动改变样式
    for循环中嵌套函数,执行顺序和结果该如何理解?
    mui 记录
    获取页面所有a标签href
    cookie记录横向滚动条位置
    Istio全景监控与拓扑
    Istio 流量治理功能原理与实战
    Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/3593711.html
Copyright © 2011-2022 走看看