QT之 给控件添加右键菜单

news2024/11/25 22:39:11

一、效果预览

在这里插入图片描述

二、代码

cpp文件

//listView右键菜单
void MainWindow::Rightclicklistview()
{


    //初始化一级菜单
    TotalRightclick =new QMenu(this);
    AddDevice = new QMenu(this);
    upDevice = new QAction(this);
    DownDevice = new QAction(this);
    Delete = new QAction(this);
    EditDevice = new QAction(this);

    //初始化二级菜单
    DeviceIS6201A =new QMenu(this);
    DeviceIS6202A = new QMenu(this);
    DeviceIS6203A = new QMenu(this);

    //初始化三级菜单
    DeviceIS6201A_IIC = new QAction(this);
    DeviceIS6201A_PMBV1 = new QAction(this);
    DeviceIS6201A_PMBV2= new QAction(this);

    //各级图标
    //一级图标
    QIcon iconadd = QIcon(":/Res/tools/add.png");  //加载图片
    QIcon iconUp = QIcon(":/Res/tools/moveup.png");  //加载图片
    QIcon iconDown = QIcon(":/Res/tools/movedown.png");  //加载图片
    QIcon iconDelete = QIcon(":/Res/tools/delete.png");  //加载图片
    QIcon iconEdit = QIcon(":/Res/tools/paste.png");  //加载图片
    
    
    //二级图标
    QIcon iconUser = QIcon(":/Res/tools/user.png");  //加载图片
    
    //三级图标
    QIcon iconChip = QIcon(":/Res/tools/xinpian.png");  //加载图片

    //子对象在父对象里面从属关系匹配
    AddDevice  = TotalRightclick->addMenu(iconadd,"  Add Device");
    upDevice = TotalRightclick->addAction(iconUp,"  Move Up Device");
    DownDevice = TotalRightclick->addAction(iconDown,"  Move Down Device");
    Delete = TotalRightclick->addAction(iconDelete,"  Delete Device");
    EditDevice = TotalRightclick->addAction(iconEdit,"  Edit Device");

    DeviceIS6201A = AddDevice->addMenu(iconUser,"  IS6201A");
    DeviceIS6202A = AddDevice->addMenu(iconUser,"  IS6202A");
    DeviceIS6203A = AddDevice->addMenu(iconUser,"  IS6203A");

    DeviceIS6201A_IIC = DeviceIS6201A->addAction(iconChip,  "  IS6201A_IIC");
    DeviceIS6201A_PMBV1 = DeviceIS6201A->addAction(iconChip,"  IS6201A_PMBV1");
    DeviceIS6201A_PMBV2= DeviceIS6201A->addAction(iconChip, "  IS6201A_PMBV2");


      //给动作设置信号槽
      connect( upDevice, &QAction::triggered, [=]()
      {
          qDebug()<<"I'm upDevice";
      });
      connect( DownDevice, &QAction::triggered, [=]()
      {
          qDebug()<<"I'm DownDevice";
      });
      //给动作设置信号槽
      connect( Delete, &QAction::triggered, [=]()
      {
		}


          qDebug()<<"I'm DeleteAction";
      });
      connect( EditDevice, &QAction::triggered, [=]()
      {
          qDebug()<<"I'm btnSecondAction";
      });


  
      connect( DeviceIS6201A_PMBV1, &QAction::triggered, [=]()
      {
 		 qDebug()<<"I'm DeviceIS6201A_PMBV1";
      });

      connect( DeviceIS6201A_PMBV2, &QAction::triggered, [=]()
      {
          qDebug()<<"I'm DeviceIS6201A_PMBV2";
      });



      //绑定控件显示右键菜单给控件设置上下文菜单策略
      ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);
      //鼠标右键点击控件时会发送一个void QWidget::customContextMenuRequested(const QPoint &pos)信号
      //给信号设置相应的槽函数
      connect(ui->listView,&QLabel::customContextMenuRequested,[=](const QPoint &pos)
      {
          qDebug()<<pos;//参数pos用来传递右键点击时的鼠标的坐标,这个坐标一般是相对于控件左上角而言的
          TotalRightclick->exec(QCursor::pos());
      });


}

h文件

private:

    void Rightclicklistview();
    // 声明动作
    QAction * upDevice;
    QAction * DownDevice;
    QAction * Delete;
    QAction * EditDevice;
    QAction * DeviceIS6201A_IIC;
    QAction * DeviceIS6201A_PMBV1;
    QAction * DeviceIS6201A_PMBV2;


    //声明菜单
    QMenu * TotalRightclick;
    QMenu * AddDevice;
    QMenu * DeviceIS6201A;
    QMenu * DeviceIS6202A;
    QMenu * DeviceIS6203A;

文档解释参考一

参考二

参考三

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

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

相关文章

压缩包里的文件名可以这样隐藏起来

我们知道&#xff0c;压缩后的文件如果有保密需要&#xff0c;可以给压缩包设置打开密码。 设置密码后&#xff0c;还是可以打开压缩包&#xff0c;也可以看到压缩包里面的文件名称&#xff0c;当你点击里面的文件&#xff0c;才会提示需要输入密码后才能打开文件。 如果希望加…

数据运算——逻辑运算

数据运算——逻辑运算一、逻辑运算1.通过例题掌握位模式层次上的逻辑运算2.位模式层次上的逻辑运算的应用1.**与运算使指定位复位**2.**或运算使指定位置位**3.**异或运算使指定位取反**二、移位运算1.逻辑移位2.循环移位3.算术移位算术右移算术左移举例1>.(算术右移)2>.…

KepServer EX6模拟仿真PlC数据以及点表的复制跟项目的迁移

一.模拟plc数据绑定标点 1.新建通道选择“Simulator” 右击 “连接性”》新建通道选择Simulator 填写通道名称&#xff08;自定义&#xff09; 然后一直默认设置点击下一页知道完成!!! 添加展示 2.给通道添加设备 右击通道》添加设备 设备名自定义 然后一直默认进行下一步…

[附源码]计算机毕业设计springboot人事管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

使用WPS生成二维码,手机扫码访问主机的资源

问题描述 如果我们想要使用二维码&#xff0c;包装一个链接&#xff0c;访问目标资源。 在淘宝上可以看到&#xff0c;一些网店提供制作二维码服务。其实我们自己也可以做。 原理是&#xff1a;我们把资源发送给商家&#xff0c;商家拿到后&#xff0c;将资源部署到服务器上…

ARM cortex-M4核中断实验 中断和串口

要求&#xff1a;按键触发时&#xff0c;LED灯状态取反&#xff0c;并且在串口工具打印一句话。 KEY1按键按下&#xff0c;LED1状态取反&#xff0c;串口工具打印key1 down!!!! GPIO模块&#xff1a; UART模块&#xff1a; 主函数&#xff1a; 实验现象&#xff1a…

2022世界杯漫谈与猜想,谁是你心目中的第一

文章目录0、 我与足球1、卡塔尔世界杯2、亚洲球队水平3、中国足球4、展望0、 我与足球 1、第一次意义上的踢足球还是初中&#xff0c;记得是五四青年节说全校搞一场足球比赛&#xff0c;我们班莫名其妙的组了一个队&#xff0c;然后在放学后提提足球&#xff0c;那时候规则都不…

JSON端口操作实例

JSON 端口可直接实现在 JSON 和 XML 之间进行转换。端口会自动检测输入文件是 JSON 还是 XML&#xff0c;然后将文件在两种格式间相互转换。 该端口较多的是运用在API接口调用集成方案的项目当中&#xff0c;我们以百思买项目为例&#xff0c;知行之桥将接收到的百思买的EDI报…

针对海洋数据的管理三维gis软件系统有何优势

海洋地理信息系统是以深海、水质、海表层、空气及海岸带人类活动为研究对象,经过综合利用地理信息系统的室内空间海洋数据处理方法、GIS和绘图系统集成化、三维算法设计、海洋数据信息仿真模拟和界面显示等功能,为多种来源的数据信息给予协调性坐标、储存和集成化信息内容等专用…

springboot整合jett导出数据(2)

一 操作案例 1.1 pom文件 <dependency><groupId>net.sf.jett</groupId><artifactId>jett-core</artifactId><version>0.11.0</version></dependency> 1.2 代码 /*** author liujianfu* description 导出 环保指标查询…

基于java+springmvc+mybatis+vue+mysql的婚纱影楼

项目介绍 婚姻是每个人人生中都非常重要的一个组成部分&#xff0c;它是一个新家庭的开始也是爱情的见证&#xff0c;所以很多人在结婚之前都会拍一套美美的婚纱照来纪念这一美好的时刻&#xff0c;但是很多时候人们在拍婚纱照的时候都是到当地的影楼去拍摄&#xff0c;这种影…

React基础

文章目录1.简介1.1 react与vue1.1.1 相同点1.1.2 不同点1.1.3 函数式组件的特点&#xff08;什么是函数式组件&#xff09;a.幂等b.无副作用用&#xff1a;1.1.4 虚拟dom的作用1.1.5 vue当中template与render的关系&#xff1a;1.2 MVC、MVVM、MVP模式1.2.1 MVC1.2.2 MVVM1.2.3…

速锐得解码特斯拉Model Y整车网关电路及CAN通信协议DBC控制策略

研究和解码特斯拉Model Y的整车控制中心的控制策略&#xff0c;比研究一般宝马、奔驰、奥迪的CAN总线数据更有乐趣&#xff0c;速锐得近期解码了特斯拉Model Y整车网关电路&#xff0c;分析出特斯拉Model Y网关电路图及CAN矩阵并编译了特斯拉Model Y通信协议DBC文件。 研究特斯…

SOLIDWORKS 3D CAD 2023基础解决方案 新功能Top 10

SOLIDWORKS 3D CAD 2023新版本即将于大家见面&#xff0c;而SOLIDWORKS 3D CAD是SOLIDWORKS整体解决方案的基础功能&#xff0c;微辰三维为您总结了SOLIDWORKS 3D CAD 2023增强功能的Top 10&#xff0c;一起来看看吧&#xff01; 1、电力布线 轻松创建含多个电路的接头&#xf…

天宇优配|上架秒光 “3时代”的大额存单受宠

“最近理财产品动摇比较大&#xff0c;准备处理一笔大额存单&#xff0c;但查询发现&#xff0c;某国有行暂时没有可购买的大额存单产品。”11月29日&#xff0c;成都市民王女士向金融出资报记者表示。 记者发现&#xff0c;虽然通过数次下调&#xff0c;中长期大额存单利率已步…

储能电源/移动电源专用升降压DC-DC方案PL9405

PL9405是一个双向同步4开关Buck-Boost变换器能够调节输出电压高于或低于输入电压。PL9405在较宽的输入电压范围内工作3.6 V至32v(最大36v)支持多种应用程序。集成两个9mΩ功率mosfet。PL9405可在1、2、3、4、5的充电模式下工作6电池充电。PL9405采用恒定ON时间控制buck&#xf…

利用phpspreadsheet导出Excel图表(折线图、饼状图、柱状图)

利用phpspreadsheet导出Excel图表安装 phpoffice/phpspreadsheet折线图需要使用的包实例代码效果图![实例图](https://img-blog.csdnimg.cn/39e32f13c52b4b40946562fdc55dc5b6.png)饼状图需要使用的包实例代码效果图柱状图需要使用的包实例代码效果图安装 phpoffice/phpspreads…

Day16-购物车页面-商品列表-渲染商品列表区域的结构

提纲挈领&#xff1a; 我的操作&#xff1a; 1》定义如下的 UI 结构&#xff1a; 2》美化样式 ***************************** ***************************** ***************************** ********************* 2.渲染商品列表区域的基本结构 我的操作&#xff1a; 1》…

网页添加灰色滤镜

网页添加灰色滤镜 b站的灰色滤镜 我校的灰色滤镜 CSDN的灰色滤镜 自己调制css主题,给网页加上滤镜. 更快捷的,可以在可以调制css的浏览器插件中加上滤镜,只要开启插件就会自动修改网站滤镜 以darkreader为例打开其开发者工具 *INVERT .jfk-bubble.gtx-bubble .captcheck_a…

推荐系统-召回-概述(三):向量化

只要对机器学习稍有涉猎&#xff0c;就会发现如今机器学习&#xff0c;无论是推荐、图像、语言等领域&#xff0c;随处可见embedding&#xff0c;可以说&#xff0c;在深度学习主宰机器学习领域的今天&#xff0c;万物皆可embedding。那么&#xff0c;什么是embedding&#xff…