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)); // 在鼠标点击位置显示菜单
}
相关推荐
cainiao08060520 分钟前
Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
java·大数据·开发语言
瑞雪兆丰年兮25 分钟前
数学实验(Matlab符号运算)
开发语言·算法·matlab·数学实验
chxii26 分钟前
6.2字节流
java·开发语言
八股文领域大手子43 分钟前
Java死锁排查:线上救火实战指南
java·开发语言·面试
点云SLAM1 小时前
Python中列表(list)知识详解(2)和注意事项以及应用示例
开发语言·人工智能·python·python学习·数据结果·list数据结果
国强_dev1 小时前
任意复杂度的 JSON 数据转换为多个结构化的 Pandas DataFrame 表格
开发语言·python
o(╥﹏╥)1 小时前
绑定 SSH key(macos)
开发语言·git·学习·macos
小龙Guo1 小时前
QT+opencv实现卡尺工具找圆、拟合圆
开发语言·qt·opencv
XQ丶YTY1 小时前
大二java第一面小厂(挂)
java·开发语言·笔记·学习·面试
一只努力学习的Cat.3 小时前
C++:二叉搜索树
开发语言·c++