[ Qt ] | 与系统相关的操作(一):鼠标相关事件

目录

信号和事件的关系

(leaveEvent和enterEvent)

实现通过事件获取鼠标进入和鼠标离开

(mousePressEvent)

实现通过事件获得鼠标点击的位置

(mouseReleaseEvent)

前一个的基础上添加鼠标释放事件

(mouseDoubleClickEvent)

鼠标双击事件

鼠标移动事件

鼠标滚轮事件


Qt中很多的能力是操作系统提供的,只不过是Qt封装了系统的API。

说到Qt系统相关呢~,主要分为下面几个部分:

  1. 事件

  2. 文件操作

  3. 多线程编程

  4. 网络编程

  5. 多媒体(视频、音频)

这篇文章主要介绍"事件"。

信号和事件的关系

(leaveEvententerEvent)

实现通过事件获取鼠标进入和鼠标离开

创建一个子类,继承自Qlabel ,重写leaveEvententerEvent

拖入一个Label控件,修改frameShape为box

下一步 -> 完成。

添加头文件,添加父对象

添加要重写的函数,注意拼写正确。

将QLabel提升为我们自己的Label

一定要确定这里的提升的类名称和头文件跟之前我们创建的是一致的。

点击 添加 -> 提升(右上角的对象树就发生了变化)

(mousePressEvent)

实现通过事件获得鼠标点击的位置

拖入一个Label控件,修改frameShape为box

新建一个Lable,继承自QLabel,修改接口希望能够指定父窗口,提升原来拖入的Lable控件,重写方法

这里的形参ev中就包含了鼠标指针的坐标。

我们可以看作左边远点是Label控件的左上角

我们点击可以发现,无论是鼠标左键、鼠标右键、鼠标中键(滚轮),前进后退侧键(标准的鼠标按键)点击都是可以获得坐标的。

我们可以判定是哪个案件触发了事件

可以转过去看看,依旧位图~~

(mouseReleaseEvent)

前一个的基础上添加鼠标释放事件

(mouseDoubleClickEvent)

鼠标双击事件

继续在前一个基础上添加双击事件

我们发现:我们双击鼠标第二次就会触发鼠标双击的事件,而不是点击的事件。

鼠标移动事件

鼠标滚轮事件

不再是QMouseEvent,而是QWheelEvent

相关推荐
Scott9999HH12 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
2401_8414956413 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
fqbqrr13 小时前
2607C++,soui与安卓
c++·soui
码智社14 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海14 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖14 小时前
JDK 26 新特性详解
java·开发语言
马优晨15 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
fqbqrr17 小时前
2607C++,使用微软detours勾挂工具
c++
人邮异步社区17 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大17 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf