Qt扫盲-QMouseEvent 鼠标事件

news2024/12/23 6:22:14

QMouseEvent 鼠标事件理论

  • 一、概述
  • 二、鼠标事件的传递
  • 三、组合修饰符
  • 四、鼠标坐标位置
  • 五、使用方式

一、概述

当在QWidget窗口内的鼠标按钮被按下或释放,或者鼠标光标被移动时,就会发生鼠标事件。

鼠标按下释放没有什么特殊的,但是鼠标移动事件比较特殊,只有当鼠标按钮被按下时,鼠标移动事件才会发生,除非使用 QWidget::setMouseTracking()函数去启用了鼠标跟踪。

  • QWidget::setMouseTracking(bool enable)
    如果禁用了鼠标跟踪(默认),则只有在鼠标移动过程中至少按下一个鼠标按钮时,Widget才会接收鼠标移动事件。
    如果启用了鼠标跟踪,即使没有按下按钮,widget也会接收鼠标移动事件。

二、鼠标事件的传递

当widget内的鼠标按键被按下时,Qt会自动抓取鼠标;Widget将继续接收鼠标事件,直到释放最后一个鼠标按钮。
鼠标事件包含一个特殊的accept标志,表示接收者是否想要这个事件。如果widget没有处理鼠标事件,就应该调用ignore()。这个就操作就可以让鼠标事件在父Widget链中向上传播,直到Widget使用accept()接受它,或者事件过滤器使用它。

注意:如果一个鼠标事件被传播到一个设置了Qt:: wa_nomoussepropagation的Widget上,那么这个鼠标事件将不会在父Widget链上进一步传播。

三、组合修饰符

键盘修饰键的状态可以通过调用从QInputEvent继承的modifiers()函数来找到。

就像 在鼠标移动的时候我同时按住一些 shift 或着 alt之类的。这个可以是同时被按下多个键的哈,

标识名含义
Qt::NoModifier0x00000000没修饰键按下
Qt::ShiftModifier0x02000000Shift 按下
Qt::ControlModifier0x04000000Ctrl 按下
Qt::AltModifier0x08000000Alt 按下
Qt::MetaModifier0x10000000Meta 按下

四、鼠标坐标位置

函数pos()、x()和y()给出了鼠标相对于接收鼠标事件的Widget的位置。

如果在鼠标事件发生后移动了Widget,使用globalPos()返回的全局位置来避免抖动。这个globalPos() 其实是鼠标在整个屏幕平面的位置,而pos()是指这个鼠标在这个窗口的位置。
在这里插入图片描述

五、使用方式

函数QWidget::setEnabled()可用于启用或禁用Widget的鼠标和键盘事件。

要使用这个事件函数的时候,就需要重新实现QWidget事件处理程序,即继承QWidget窗口去重写QWidget::mousePressEvent()、QWidget::mouseReleaseEvent()、QWidget::mouseDoubleClickEvent()和QWidget::mouseMoveEvent(),在自己的Widget中接收鼠标事件即可。当然也可以不去继承,直接使用事件过滤器也可以用的哈。

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

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

相关文章

数据可视化利器:五个常见组件助您洞察数据

数据可视化组件是在数据分析展示中我们离不开的工具,可以帮助我们更直观地理解和分析数据。不同的数据可视化组件适用于不同类型的数据,本文介绍五个常见的可视化组件以及它们适合展示的数据类型。 柱状图(Bar Chart)&#xff1a…

美团太狠:100亿级分库分表,不停机迁移,如何处理?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如腾讯、美团、阿里、拼多多、极兔、有赞、希音的面试资格,遇到一几个很重要的面试题: 数据库如何不停机迁移?100亿级库表,如何不停机迁移&a…

开放式耳机和封闭式耳机有什么区别,那开放式耳机对耳朵伤害大吗?

开放式耳机从字面意思可以理解为:开放耳朵,不需要入耳就可以听见声音的耳机。这种耳机最大的优点就是不压迫不封闭耳道,而且在听耳机音的同时能够及时注意到周围环境的声音,从而可以避免到一些安全事故的发生。 第一点&#xff1a…

台灯选a级还是aa级?科普a级台灯和aa级台灯的区别

我们经常能听到a级台灯aa级台灯,那么里面所说的a级、aa级到底是什么意思呢?其实这里所说的是国A级照度和国AA级照度标准的台灯,是根据国家颁布的《读写作业台灯性能要求》区别的,只有符合其标准的台灯才能被称为护眼台灯&#xff…

学习笔记整理-UML建模与应用复习3-动态模型

动态模型是用来描述系统的动态行为,分为状态模型和交互模型。 其中状态模型分为状态图和活动图;交互模型分为时序图和协作图。 一、交互模型 时序图是描述信息交换时的时间顺序,而协作图是描述系统对象之间共同完成系统功能的要求。 1、时序…

【网络技术】TCP详解

1 TCP是什么 TCP是Transmission Control Protocol的缩写,即传输控制协议。 TCP是一种面向连接的、可靠的、基于字节流的传输协议,是互联网通信协议TCP/IP中的一个重要组成部分。 2 三次握手 三次握手的过程可以用以下图示表示: 2.1 详细介绍…

php命令执行漏洞加固

首先需要去看一下命令执行漏洞的代码: 就像这样,我们可以利用管道符来进行执行一些命令。 我们在网站中渗透一下: 配合上管道符,我们就可以进行执行命令。 这样的话我们总么进行加固呢,我们可以利用if语句来进行加固…

Hadoop启动后没有NameNode进程,日志报ulimit -a for user root

环境:CentOS7、Hadoop2.6.4 背景:安装后启动正常,一段时间在来启动发生这种情况。 现象: 启动后没有NameNode进程,于是查看日志,日志显示ulimit -a for user root,潜意识还以为文件不能读。&a…

期货反向跟单系统能精准捕捉买卖点嘛?什么人不适合做期货反向跟单?

期货反向跟单,就是指在期货市场上,根据某些大户或者专业机构的交易动向,采取与之相反的操作策略,以期获得利润。例如,当发现某个大户在买入某种期货合约时,就立即卖出同样数量的合约,反之亦然。…

MQTT协议学习

前言 最近在学习mqtt协议,看的是官方英文版的,写这篇博客就是为了将一些关键内容提取出来,以便日后的查询和复习,有需要的可以参考。官方的文档在这: MQTT Essentials - All Core Concepts explained (hivemq.com) …

svn下载及使用

下载 链接:https://pan.baidu.com/s/1RV6vAujA1anHhXJuKbItUQ?pwdflzx 提取码:flzx 这是svn安装包以及中文安装包,放在百度网盘了,有需要可以下载 注意:svn中文语言包安装的版本需要和svn的版本一致 他有两种安装…

ModaHub魔搭社区:向量数据库Milvus产品问题(一)

目录 产品问题 Milvus 会收费吗? Milvus 支持非 x86 平台吗? Milvus 支持对向量的插入、删除、更改和查询操作吗? Milvus 可以处理百亿或千亿级数据吗? Milvus 数据存储在哪里? 为什么我在 SQLite / MySQL 找不…

实时监测:BL102 PLC网关在水利设施中的数据采集

随着工业智能化的快速发展,BL102 PLC网关作为一种先进的工业自动化设备,在泵站远程监测领域发挥了重要的作用。通过BL102 PLC网关,我们可以实现对泵站PLC的远程监测和控制,从而提高泵站的工作效率和管理水平。 ​一、BL102 PLC网关…

机器人轨迹生成:轨迹规划与路径规划

机器人轨迹生成涉及到轨迹规划和路径规划两个关键概念,它们是机器人运动控制中的重要组成部分。下面对轨迹规划和路径规划进行深入比较。 轨迹规划(Trajectory Planning): 定义:轨迹规划是指在机器人运动中确定机器人末…

【设计模式】第十六章:迭代器模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章:单例模式 【设计模式】第二章:工厂模式 【设计模式】第三章:建造者模式 【设计模式】第四章:原型模式 【设计模式】第五章:适配器模式 【设计模式】第六章&…

2023 年 最全的 24 个最佳免费照片恢复软件

你的心脏停止跳动,你的胃下沉。你的血液变冷了。你无法屏住呼吸。这是恐慌和怀疑的结合。如果您曾经丢失过数字文件,这种感觉很熟悉。 也许您不小心删除了照片。或者某些文件可能只是消失了。不管发生什么,都是令人心碎的。 不过&#xff0…

2023年27个最佳WordPress博客和新闻杂志主题

当建设杂志和新闻网站时,WordPress是首选。 纽约时报、TechCrunch、CNN、路透社、Mozilla 博客等知名新闻网站以及许多其他网站都使用 WordPress 作为他们的首选平台,突出了WordPress杂志主题的可扩展性。 在一个年轻受众与新闻品牌的联系明显较弱的世…

K8S出错bash: _get_comp_words_by_ref: command not found

重新配置了CentOS环境,执行kubectl apply -f xxx.yaml,想自动补全文件名,遇到错误:bash: _get_comp_words_by_ref: command not found 但是试验其它bash自动补全功能,没问题,比如cd 某个目录自动补全&#…

SAP BDC 录屏及 ABAP 调用 BDC

1:输入事务代码:SHDB.点击新建记录。 输入记录名和需要录屏的事务代码。 开始记录后会进入事务代码点击返回后会记录下操作过程。 点击程序按钮,生成可以调用的代码。 代码如下: report ZTEST_APPLICTIONno standard page heading line-size…

2-Spring cloud之Eureka快速剔除失效服务

2-Spring cloud之Eureka快速剔除失效服务 1. eureka server端修改yml配置2. 客户端配置 1. eureka server端修改yml配置 添加如下配置: server:enable-self-preservation: false # 关闭自我保护eviction-interval-timer-in-ms: 3000 # 清理间隔(剔除失效服务…