QT 实现右键菜单

news2025/1/18 9:52:20

有时我们希望在窗口中右键弹出菜单,这里来介绍一下QT中怎么实现.
.h 中添加事件相应函数声明和变量定义:

private:
    // 菜单事件
    void contextMenuEvent(QContextMenuEvent* event) override;

    void initMenu();

private:
    QMenu* m_pMenu = nullptr;

在构造函数中设置菜单选项

// 设置菜单策略
    this->setContextMenuPolicy(Qt::DefaultContextMenu);

this可以改为其它组件指针,这样就可以在指定组件内右键才弹出菜单。这里指在整个窗口右键都会弹出菜单。

菜单内容的初始化实现:

void Widget::initMenu()
{
    m_pMenu = new QMenu(this);
    QAction *pAc1 = new QAction("ac1");
    QAction *pAc2 = new QAction("ac2");
    QAction *pAc3 = new QAction("ac3");
    QAction *pAc4 = new QAction("ac4");
    QAction *pAc5 = new QAction("ac5");

    m_pMenu->addAction(pAc1);
    m_pMenu->addAction(pAc2);
    m_pMenu->addAction(pAc3);
    m_pMenu->addAction(pAc4);
    m_pMenu->addAction(pAc5);

    connect(pAc1, &QAction::triggered, [=]{
        QMessageBox::information(this, "title", "ac1");
    });

    connect(pAc2, &QAction::triggered, [=]{
        QMessageBox::information(this, "title", "ac2");
    });

    connect(pAc3, &QAction::triggered, [=]{
        QMessageBox::information(this, "title", "ac3");
    });

    connect(pAc4, &QAction::triggered, [=]{
        QMessageBox::information(this, "title", "ac4");
    });

    connect(pAc5, &QAction::triggered, [=]{
        QMessageBox::information(this, "title", "ac5");
    });
}

菜单的响应函数:

void Widget::contextMenuEvent(QContextMenuEvent* event)
{
    m_pMenu->exec(QCursor::pos());
}

实现如下图:
在这里插入图片描述
源代码实现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

前言 不知道大家在开发的过程中,有没有遇到这种场景,外部的项目想访问内部nexus私仓的jar,因为私仓不对外开放,导致外部的项目没法下载到私仓的jar,导致项目因缺少jar而无法运行。 通常遇到这种场景,常用…

HUN工训中心:开关电路和按键信号抖动

工训中心的牛马实验 1.实验目的: 1) 认识开关电路,掌握按键状态判别、开关电路中逻辑电平测量、逻辑值和逻辑函数电路。 2) 掌握按键信号抖动简单处理方法。 3) 实现按键计数电路。 2.实验资源: HBE硬件基础电路实验箱、示波器、万用表…

Java学习--网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…

【GIT】git不同仓库设置不同用户名和邮箱

随着业务的拓展,工作中,我们除了要在公司的git库提交代码,还可能在阿里云效codeup、gitcode等上提交代码。 之前git安装时使用的是全局名称,导致所有的git提交都使用了相同的用户名和邮箱。 查看全局用户名和邮箱 $ git config -…

论文调研——23.2.28

文章目录Diffusion Models: A Comprehensive Survey of Methods and ApplicationsADVERSARIAL TRAINING METHODS FOR SEMI-SUPERVISED TEXT CLASSIFICATIONHuman Emotion Knowledge Representation Emerges in LargeAPI 调优上: Decoder Tuning: Efficient Language…

记录一下atlas200模块无法正常通过别的设备SSH连接192.168.1.2问题笔记粗心者用

atlas200远程登录发现登录不了 串口打印内核信息正常显示,如下几个错误记录分别在windows上和ubuntu上分别做了测试,之前都是 安装完 kex_exchange_identification: read: Connection reset 华为atlas200模块 登录显示这个目前没有解决,应该…

220V转5V非隔离2W电源--超低成本

目录 详情 产品特性和优势 设计电路 MP150芯片资料 详情 MP150 是一款原边调节器,可以在无光耦合器的条件下提供精确的恒压(CV)调节。MP150 支持降压、升降压、升压和反激拓扑。它内部集成了 500V MOSFET,可简化结构&#xff0…

HUN工训中心:三位数码管扫描显示实验报告

工训中心牛马实验 1.1操作说明及现象描述 根据老师发的安装包下载和安装好Quartus II软件。在电脑安装USB硬件驱动,再与PC接口连接好,可以打开任务管理器查看是否安装好。之后打开Quartus II软件,按照菜单Tool->programmer->add file…

6大类,不同类型单板布线策略

PCB布线策略 一、类型一主要特征如下 严格的长度规则、严格的串扰规则、拓扑规则、差分规则、电源地规则等。 二、关键网络的处理:总线定义Class 要求满足一定的拓扑结构、stub及其长度(时域)约束条件 图-1 平衡菊花链和中间驱动菊花链图 设置虚拟管脚来控制拓扑…

张驰咨询:六西格玛常见问题解答

以下是张驰咨询对一些关于六西格玛常见问题的解答: 1、六西格玛是什么? 六西格玛是一种改善企业质量流程管理的技术,以“零缺陷”的完美商业追求,带动质量大幅提高、成本大幅度降低,最终实现企业财务成效的提升与企业…

SpringCloud系列知识快速复习 -- part 1(SpringCloud基础知识,Docker,RabbitMQ)

SpringCloud知识快速复习SpringCloud基础知识微服务特点SpringCloud常用组件服务拆分和提供者与消费者概念Eureka注册中心原理Ribbon负载均衡原理负载均衡策略饥饿加载Nacos注册中心服务分级存储模型权重配置环境隔离Nacos与Eureka的区别Nacos配置管理拉取配置流程配置热更新配…

大家挤破脑袋都想进的腾讯,你为什么想要辞职?

前几天,我在网上看到一个故事。 故事的主人翁是19届的校招生,目前入职腾讯,工作了一个月。这一个月给他的感受是大量的写测试用例,感觉自己写测试用例的能力熟练了不少,测试技能倒是没有多大的提高,真正需…

一文解决Python所有报错

前言 Python是一种强大的编程语言,但是它也有一些报错,这些报错可能会让你感到困惑。本文将介绍如何解决Python中的常见报错。 首先,让我们来看看Python中最常见的报错:SyntaxError。这种报错表明你的代码中有语法错误&#xff0c…

Javaweb增删改查之【查】

Javaweb增删改查之【查】1.前端页面2.java链接数据库——集成mybatis2.1 建立层2.2 实体层entity2.3 mapper(dao层)2.4 mybatis配置文件2.5工具层util3.后台功能3.1servlet前几天跟着b站up主学javaweb登录,突然还是觉得这几年学了c是真的挺好…

对象扩展、函数的扩展、Symbol、Iterator 迭代器、Set结构、Map 数据结构——ES6+

目录 一、对象扩展 二、函数的扩展 三、Symbol 四、Iterator 迭代器 五、Set结构 六、Map 数据结构 一、对象扩展 1. 对象简写 对于对象属性,属性名与属性值对应的变量相同时,可简写为属性名 对于对象方法,将 :function…

优化基于axios接口管理的骚操作

优化基于axios接口管理的骚操作! 本文针对中大型的后台项目的接口模块优化,在不影响项目正常运行的前提下,增量更新。 强化功能 1.接口文件写法简化(接口模块半自动化生成) 2.任务调度、Loading调度(接口层…

Javaweb复习之HTTPTomcatServelet

1.Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 JavaWeb就是用Java技术来解决相关web互联网领域的技术栈 1.2 JavaWeb技术栈 B/S 架构:Browser/Server,浏览器/服务器 架构模…

仓库管理系统包括哪些方面?

想要弄清楚仓库管理系统包括哪些方面,得先了解仓库管理体系包含哪些方面。 一般来说,仓库管理体系包含以下四大方面: 数据精确度体系:如何通过制定相关政策及操作规范,提升库内数据的准确度。管理体系:构…

React的生命周期详细讲解

什么是生命周期? 所谓的React生命周期,就是指组件从被创建出来,到被使用,最后被销毁的这么一个过程。而在这个过程中,React提供了我们会自动执行的不同的钩子函数,我们称之为生命周期函数。**组件的生命周期…

【论文阅读】-姿态识别

记录论文阅读,希望能了解我方向的邻域前沿吧 粗读 第一篇 ATTEND TO WHO YOU ARE: SUPERVISING SELF-ATTENTION FOR KEYPOINT DETECTION AND INSTANCE-AWARE ASSOCIATION 翻译:https://editor.csdn.net/md?not_checkout1&spm1001.2014.3001.5352…