QT菜单之快捷菜单设计

快捷菜单又称为上下文菜单,通常在用鼠标右击的时候弹出。创建快捷菜单的方法和创建菜单栏菜单类似。

效果图:

一、将MainWindow类对象的ContextMenuPolicy属性设置为customContextMenu。

打开mainWindow.ui,在属性视图上找到ContextMenuPolicy,并选择CustomContextMenu。

二、创建菜单栏对象

三、在mainwindow.ui界面鼠标右键选择"转到槽",接着点击信号对应的CustomContextMenuRequested(QPoint),单击OK。然后编辑槽函数如下

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //一级菜单
    menu1 = new QMenu(QString::fromUtf8("编辑"));
    menu1->addAction(QString::fromUtf8("退出"));
    menu1->addAction(QString::fromUtf8("选项"));
    menu1->addAction(QString::fromUtf8("信息"));
    //二级菜单1
    menu2 = new QMenu(QString::fromUtf8("保存为"));
    menu2->addAction(QString::fromUtf8("保存为图片"));
    menu2->addAction(QString::fromUtf8("保存为视频"));
    menu2->addAction(QString::fromUtf8("保存为文本文件"));
    //二级菜单2
    menu3 = new QMenu(QString::fromUtf8("工具栏"));
    menu3->addAction(QString::fromUtf8("缩小"));
    menu3->addAction(QString::fromUtf8("放大"));
    menu3->addAction(QString::fromUtf8("插入"));
    menu3->addAction(QString::fromUtf8("切换"));
    //将二级菜单插入一级菜单栏中
    menu1->addMenu(menu2);
    menu1->addMenu(menu3);
    //初始化为当前页面菜单栏
    this->menuBar()->addMenu(menu1);
}

MainWindow::~MainWindow()
{
    delete ui;
}
//鼠标右键点击显示菜单
void MainWindow::on_MainWindow_customContextMenuRequested(const QPoint &pos)
{
    menu1->exec(mapToGlobal(pos)); // 在鼠标点击位置显示菜单
}
相关推荐
Mr.Jessy2 小时前
JavaScript高级:构造函数与原型
开发语言·前端·javascript·学习·ecmascript
云栖梦泽4 小时前
鸿蒙应用签名与上架全流程:从开发完成到用户手中
开发语言·鸿蒙系统
爱上妖精的尾巴4 小时前
6-4 WPS JS宏 不重复随机取值应用
开发语言·前端·javascript
小鸡吃米…6 小时前
Python 列表
开发语言·python
kaikaile19956 小时前
基于C#实现一维码和二维码打印程序
开发语言·c#
我不是程序猿儿6 小时前
【C#】画图控件的FormsPlot中的Refresh功能调用消耗时间不一致缘由
开发语言·c#
rit84324996 小时前
C# Socket 聊天室(含文件传输)
服务器·开发语言·c#
嘉琪0017 小时前
Vue3+JS 高级前端面试题
开发语言·前端·javascript
xunyan62347 小时前
面向对象(下)-接口的理解
java·开发语言
遥不可及~~斌7 小时前
Java 面试题集 -- 001
java·开发语言