【QT】鼠标常用事件

新建项目

加标签控件

当鼠标进去,显示【鼠标进入】,离开时显示【鼠标离开】

将QLable提升成自己的控件,然后再去捕获

添加文件

改继承的类名

提升类

同一个父类,可以提升

效果

现在代码就和Qlabel对应起来了。

在.h中声明,.cpp中实现

#include "mylabel.h"
#include <QDebug>MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() << "鼠标进入";
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() << "鼠标离开";
}

测试

鼠标的移动、按下、松开事件

    // 鼠标移动事件virtual void mouseMoveEvent(QMouseEvent *ev) override;// 鼠标按下事件virtual void mousePressEvent(QMouseEvent *ev) override;// 鼠标松开事件virtual void mouseReleaseEvent(QMouseEvent *ev) override;

实现

#include "mylabel.h"
#include <QDebug>MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() << "鼠标进入";
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() << "鼠标离开";
}// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {qDebug() << "鼠标移动";
}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {qDebug() << "鼠标按下";
}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {qDebug() << "鼠标松开";
}

测试

坐标信息(基于控件的坐标系

#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() << "鼠标进入";
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() << "鼠标离开";
}// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {qDebug() << "鼠标移动" ;
}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {// 格式化字符串方式QString str = QString("鼠标按下, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;
}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {qDebug() << "鼠标松开";
}

效果

其他的类似

判断鼠标左右键

// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {// 格式化字符串方式// 左键才打印下面的信息if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标按下, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;} else {qDebug() << "右键按下";}}

效果

全部改成按左键有输出

// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {// 格式化字符串方式if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标移动, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}
}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {// 格式化字符串方式// 左键才打印下面的信息if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标按下, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {// 格式化字符串方式if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标松开, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}
}

效果

移动是没有输出的。按下和松开是一瞬间的,而移动不是一瞬间的,是联合的。使用buttons和&

// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {// 格式化字符串方式if (ev->buttons() & Qt::LeftButton) {QString str = QString("鼠标移动, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}
}

效果

鼠标不点下去,移动。设置鼠标追踪的状态,默认为false,在构造函数中设置

#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{// 设置鼠标追踪状态,默认是falsethis->setMouseTracking(true);
}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() << "鼠标进入";
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() << "鼠标离开";
}// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {// 格式化字符串方式
//    if (ev->buttons() & Qt::LeftButton) {
//        QString str = QString("鼠标移动, x = %1, y = %2").arg(ev->x()).arg(ev->y());
//        qDebug() << str;
//    }QString str = QString("鼠标移动, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {// 格式化字符串方式// 左键才打印下面的信息if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标按下, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {// 格式化字符串方式if (ev->button() == Qt::LeftButton) {QString str = QString("鼠标松开, x = %1, y = %2").arg(ev->x()).arg(ev->y());qDebug() << str;}
}

效果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux———— 运算命令

Shell与其他编程语言一样&#xff0c;支持多种类型的运算符&#xff0c;包括&#xff1a; 算术运算符&#xff1a;用于执行数学运算&#xff0c;例如加法、减法、乘法和除法。 关系运算符&#xff1a;用于比较两个值之间的关系&#xff0c;例如相等、大于、小于等。 布尔运算…

FPGA 如何 固化程序到 FLASH中

1、导出Hardware 2、导出bit文件 3、打开SDK 4、 点击Ok 5、创建工程 6、 输入工程名称&#xff1a;guhua 7、选择 Zynq FSBL 8、单击 guhua、然后点击 build 点击&#xff1a;build all 9、 右键之后&#xff0c;点击&#xff1a;Creat Boot Image 10、点击 Cr…

项目解读_v2

1. 项目介绍 如果使用task2-1作为示例时&#xff0c; 运行process.py的过程中需要确认 process调用的是函数 preprocess_ast_wav2vec(wav, fr) 1.1 任务简介 首个开源的儿科呼吸音数据集&#xff0c; 通过邀请11位医师标注&#xff1b; 数字听诊器的采样频率和量化分辨率分…

大厂面试题-网络四元组

四元组&#xff0c;简单理解就是在TCP协议中&#xff0c;去确定一个客户端连接的组成要素&#xff0c;它包括源 IP地址、目标IP地址、源端口号、目标端口号。 正常情况下&#xff0c;我们对于网络通信的认识可能是这样(如图)。 服务端通过Server Socket建立一个对指定端口号…

商城性能测试LoadRunner快速上手教学

软件介绍 Virtual User Generator &#xff0c;记录用户流程并创建一个自动化性能测试脚本Controller&#xff0c;单一控制点&#xff0c;轻松、有效地控制所有Vuser&#xff0c;执行期间监控场景性能Analysis&#xff0c;生成性能测试报告&#xff0c;以图表形式呈现。 由于…

UE5使用Dash插件实现程序化地形场景制作

目录 0 dash下载后激活 1 初步使用 2 导入bridge的资产路径 3 练习成果 4 参考链接 0 dash下载后激活 1 初步使用 Dash插件点击蓝色的A&#xff0c;可以使用。 通过输入不同提示命令&#xff0c;来激活不同的功能。 2 导入bridge的资产路径 这里需要注意是UAsserts…

解决Linux Debian12系统中安装VirtualBox虚拟机无法使用USB设备的问题

Debian12系统中安装VirtualBox&#xff0c;再VirtualBox虚拟机中无法使用 USB设备。如下图所示&#xff1a; 解决方法如下&#xff1a; 1.安装 Virtualbox增强功能。如下图所示&#xff1a; 2.添加相关用户、用户组&#xff08; Virtualbox 装完成后会有 vboxusers 和 vboxs…

Vue:实现输入vue组件名称,就可以从网页上加载出组件

作者:CSDN @ _乐多_ 本文记录了使用动态组件实现在网页上输入vue组件名称,就可以从网页上直接加载组件的功能的代码。 实现效果如下所示, 在许多Vue.js应用中,我们有大量的组件,但并不是每个组件都需要在应用初始化时加载。动态加载组件的好处包括: 减小初始加载时间:…

Android页面周期、页面跳转

1.什么是Activity&#xff1f; Activity是Android的四大组件之一&#xff0c;它是一种可以包含用户界面的组件&#xff0c;主要用于和用户进行交互。Activity用于显示用户界面&#xff0c;用户通过Activity交互完成相关操作&#xff0c;一个APP允许有多个Activity。 2.Activi…

职业规划:如何成为年薪80W+的Salesforce项目经理?

Salesforce项目经理负责监督各种Salesforce云和端到端Salesforce项目&#xff0c;首要任务是确保项目成功&#xff0c;并在预算范围内按时交付。Salesforce项目经理的薪资是不断增长的Salesforce经济中的热门话题。 Salesforce项目经理的职责 项目经理的职业发展更多地关注经验…

JS 去除字符串中所有标点符号

直接上代码了 var str 这是《书》中的一段&#xff0c;两段文字。; var new_str str.replace(/[:_.~!#$%^&*() \ <>?"{}|, \/ ; \\ [ \] ~&#xff01;#&#xffe5;%……&*&#xff08;&#xff09;—— \ {}|《》&#xff1f;&#xff1a;“”【】、&a…

Goby 漏洞发布| Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞(CVE-2023-20198)

漏洞名称&#xff1a; Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞&#xff08;CVE-2023-20198&#xff09; English Name&#xff1a; Cisco IOS XE ebui_wsma_http API Permission Bypass Vulnerability (CVE-2023-20198) CVSS core: 10 影响资产数&#xff1a; 307282…

分享一下微信小程序里怎么开店

如何在微信小程序中成功开店&#xff1a;从选品到运营的全方位指南 一、引言 随着微信小程序的日益普及&#xff0c;越来越多的人开始尝试在微信小程序中开设自己的店铺。微信小程序具有便捷、易用、即用即走等特点&#xff0c;使得开店门槛大大降低。本文将详细介绍如何在微…

概念解析 | 神经网络中的位置编码(Positional Encoding)

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:Positional Encoding 神经网络中的位置编码(Positional Encoding) A Gentle Introduction to Positional Encoding in Transformer Models, Part 1 1.背景介绍 在自然语言处理任…

RocketMQ消费者和队列对应关系

参考 RocketMQ 5.0 POP 消费模式探秘 https://www.cnblogs.com/alisystemsoftware/p/15535925.html 旧版本MQ结论 消费者应用和topic队列一对多的关系。 &#xff08;一个消费组consumer group里&#xff0c;一个消费者应用可以消费多个队列的消息。一个队列的消息只能被一个…

​LeetCode解法汇总1465. 切割后面积最大的蛋糕

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 矩形蛋糕的…

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员&#xff1a;静态数据成员和非静态数据成员&#xff0c;静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

uniapp leven系列原生插件(2)

目录 11.安卓客户端之间wifi文件传输 插件介绍 插件地址 预览图片 12.安卓热敏打印机打印插件 插件介绍 插件地址 使用文档 预览图片 13.安卓TCP原生插件 插件介绍 插件地址 使用文档 预览图片 14.安卓文字转拼音原生插件 插件介绍 插件地址 使用文档 预览图…

迅镭激光董事长颜章健荣膺“2023年如皋市科技强企人物”!

10月28日&#xff0c;2023如皋科技人才洽谈会开幕式在如皋隆重举行。江苏省科学技术厅副厅长、党组成员蒋洪&#xff0c;江苏省商务厅副厅长、党组成员孙津&#xff0c;中共南通市委副书记、政法委书记沈雷&#xff0c;中共如皋市市委书记何益军&#xff0c;中共如皋市委副书记…

人人都能看懂的DDPM反向降噪过程公式推导

0 前言 上一篇介绍了前向加噪过程&#xff0c;得到如下从 x 0 x_0 x0​ 一步到 x t x_t xt​ 过程&#xff1a; α t β t 1 \alpha_t \beta_t1 αt​βt​1&#xff0c;其中 β t \beta_t βt​ 是正态分布方差&#xff0c;即第 t t t 步产生的噪声从 N ( 0 , β t ) …