qt使用menu

embedded/2024/11/14 19:27:36/

思路:实例化一个QMenu的对象,然后通过函数addAction添加里面的子项。然后重写鼠标事件,比如当双击鼠标的时候,调用实例化对象的exec()函数,exec函数内传入重写的鼠标事件的全局坐标,就可以在鼠标点击的位置生成一个menu。

addAction函数添加子项的时候可以选择这个函数的重载类型,在里面设置图标,绑定信号和槽。这样在点击menu菜单内子项的时候就可以出发信号和槽执行后面的动作了。

示例代码如下

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QMenu>
#include <QWidget>
#include <QMouseEvent>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();public slots:void mystart();void myend();public:QMenu *menu;void mouseDoubleClickEvent(QMouseEvent *event);private:Ui::Widget *ui;
};
#endif // WIDGET_H

CPP

#include "widget.h"
#include "ui_widget.h"
#include <QMenu>
#include <QMenuBar>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);menu = new QMenu(this);menu->addAction("开始",this,SLOT(mystart()));menu->addAction("结束",this,SLOT(myend()));
}Widget::~Widget()
{delete ui;
}void Widget::mystart()
{qDebug() << "打印开始";
}void Widget::myend()
{qDebug() << "打印结束";
}void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{qDebug() << "触发双击事件" ;menu->exec(event->globalPos());
}

 

 


http://www.ppmy.cn/embedded/98625.html

相关文章

鹭鹰优化算法SBOA优化RBF神经网络的扩散速度实现多数入多输出数据预测,可以更改数据集(MATLAB代码)

一、鹭鹰优化算法介绍 鹭鹰优化算法&#xff08;Secretary Bird Optimization Algorithm, SBOA&#xff09;是一种新型的元启发式算法&#xff0c;它于2024年4月由Youfa Fu等人提出&#xff0c;并发表在SCI人工智能二区顶刊《Artificial Intelligence Review》上。该算法的灵感…

SQL高级编程:掌握自定义函数和过程的艺术

标题&#xff1a;SQL高级编程&#xff1a;掌握自定义函数和过程的艺术 在SQL的世界里&#xff0c;数据操作不仅仅局限于简单的查询和更新。通过自定义函数&#xff08;User-Defined Functions, UDFs&#xff09;和存储过程&#xff08;Stored Procedures&#xff09;&#xff…

Linux源码阅读笔记-USB设备驱动架构

总线速度及主机控制器 USB系统架构 USB系统主机端提供为4个引脚的A型接口&#xff0c;USB外围设备通过4个引脚的B型接口和主机端连接。那4个引脚&#xff08;一条电压线VBUS、一条地线GND、一条正方向传输数据的D和一条反方向传输数据的D-线。&#xff09;USB主机和USB设备收发…

平衡日常工作与提升式学习话题有感

文章目录 前言1.工作是什么&#xff1f;2.怎么提升技术&#xff1f;3.工作/学习与生活的平衡总结 前言 这篇博客是针对程序员如何平衡日常编码工作与提升式学习&#xff1f;这个话题进行的个人观点阐述&#xff0c;个人所思所想罢了。 刚毕业没几年&#xff0c;水平有限&#…

交流220V转5V100MA非隔离降压芯片应用在烧水壶上的设计与实现

### 交流220V转5V100MA非隔离降压芯片应用在烧水壶上的设计与实现 #### 引言 随着科技的不断发展&#xff0c;智能家居产品逐渐走进千家万户。烧水壶作为日常生活中常用的电器之一&#xff0c;其智能化和安全性也越来越受到消费者的关注。本文将介绍一种基于AH8652芯片的交流…

Java-接口查询没有值,需要多次调用直到有值,实现方法

CompletableFuture 结合定时重试的策略 使用 CompletableFuture 结合定时重试的策略可以有效地处理异步操作,并在遇到失败时自动重 试。下面是一个使用 Java 实现的例子,展示了如何利用 CompletableFuture 和定时重试来获取数 据。 import java.time.Duration; import ja…

原生 cesium 实现热力图功能

预览&#xff1a;https://z2586300277.github.io/three-cesium-examples/#/codeMirror?navigationCesiumJS&classifyexpand&idheatMap 国内预览&#xff1a;http://threehub.cn/ 开源地址&#xff1a;https://z2586300277.github.io/three-cesium-examples/#/exampl…

SpringBoot-读取配置文件内容

目录 前言 主页&#xff08;端口号默认8080&#xff09; 1 Value 注解 引用变量的使用 2 Environment 对象 3 ConfigurationProperties &#xff08;配置内容和对象&#xff0c;进行相互绑定&#xff09; 前言 读取配置文件有3 种方式 (1) Value注解 (2) Environm…