QMouseEvent 详解

Qt事件系统:鼠标事件和滚轮事件 QMouseEvent 类用来表示一个鼠标事件,当在窗口部件中按下鼠标、释放鼠标和移动鼠标指针时,都会产生鼠标事件 QMouseEvent。利用 QMouseEvent 类可以获知鼠标是哪个键按下释放了、鼠标指针的当前位置等信息。通常是重定义窗口部件的鼠标事件处理函数来进行一些自定义的操作。多个重叠的窗口在实现里好比一个递归的倒立树,鼠标事件会沿着鼠标指针所在的父窗口的链表向上传递,直到某个窗口调用 accept() 函数进行事件处理,否则该事件将被过滤销毁掉。 阅读详情

QMouseEvent是Qt中用于处理鼠标事件的类。它提供了关于鼠标动作的详细信息,包括点击的类型、位置、按下的按钮以及修饰键的状态等。以下是QMouseEvent的一些关键特性和用法详解:

构造函数

QMouseEvent的构造函数通常在Qt的事件处理系统中由框架自动调用,不需要开发者手动创建。它的构造函数可以接受以下参数:

  • QEvent::Type type:事件的类型,如QEvent::MouseButtonPress、QEvent::MouseButtonRelease、QEvent::MouseButtonDblClick或QEvent::MouseMove。
  • Qt::MouseButton button:触发事件的鼠标按钮,如Qt::LeftButton、Qt::RightButton或Qt::MiddleButton。
  • QPointF pos:鼠标事件发生的位置,相对于接收事件的QWidget。
  • QPointF globalPos:鼠标事件发生的位置,相对于整个屏幕。
  • Qt::MouseButtons buttons:在事件发生时按下的所有鼠标按钮的组合。
  • Qt::KeyboardModifiers modifiers:在事件发生时按下的键盘修饰键的组合,如Ctrl、Alt、Shift等。

成员函数

QMouseEvent提供了多个成员函数来查询事件相关的信息:

  • button():返回触发事件的鼠标按钮。
  • buttons():返回事件发生时按下的所有鼠标按钮的组合。
  • pos():返回鼠标事件发生的位置,相对于接收事件的QWidget。
  • globalPos():返回鼠标事件发生的位置,相对于整个屏幕。
  • modifiers():返回事件发生时按下的键盘修饰键的组合。
  • x()和y():返回鼠标事件位置的x和y坐标。
  • screenPos():返回鼠标事件位置的屏幕坐标。
  • windowPos():返回鼠标事件位置的窗口坐标。
  • widget():返回接收事件的QWidget。

事件处理

在Qt中,鼠标事件通常通过重写QWidget或其子类的mousePressEvent()、mouseReleaseEvent()、mouseMoveEvent()和mouseDoubleClickEvent()等事件处理函数来处理。在这些函数中,你可以访问传递给它们的QMouseEvent对象,并根据事件的信息执行相应的操作。

例如:

void MyWidget::mousePressEvent(QMouseEvent *event) {
    if (event->button() == Qt::LeftButton) {
        // 处理左键点击事件
    } else if (event->button() == Qt::RightButton) {
        // 处理右键点击事件
    }
}

鼠标跟踪

默认情况下,只有当鼠标按钮被按下时,QWidget才会接收到鼠标移动事件。如果你想在没有按下鼠标按钮的情况下也能接收到鼠标移动事件,你需要启用鼠标跟踪:

setMouseTracking(true);

一旦启用了鼠标跟踪,即使没有按下鼠标按钮,mouseMoveEvent()也会被频繁调用,以报告鼠标的移动。

事件传播

鼠标事件属于冒泡事件,意味着它们会从源组件开始,沿着组件树向上传播,直到被某个组件处理或到达根组件为止。如果一个组件不处理鼠标事件,它应该调用ignore()方法。如果组件处理了事件,它应该调用accept()方法。

总结

QMouseEvent是Qt中处理鼠标交互的关键类。通过重写相关的事件处理函数并利用QMouseEvent提供的接口,开发者可以实现丰富的鼠标交互功能。

Qt 事件 QMouseEvent 鼠标示例 #include #include #include class EventLabel : public QLabel { protected: void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouse 阅读详情

相关推荐

Qt开发——QMouseEvent鼠标事件

目录 效果图: QStatusBar底部显示状态信息+QMouseEvent鼠标事件 mouseevent.cpp mouseevent.h 效果图: QStatusBar底部显示状态信息+QMouseEvent鼠标事件 mouseevent.cpp #include "mouseevent.h" mouseevent::mouseevent(QWidget *parent...

沉迷单车的追风少年 2611

QT学习笔记5:QMouseEvent鼠标事件简介

一、QMouseEvent的详细描述 首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。 QMouseEvent类包含了用于描述鼠标事件的参数。 当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。 鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用...

dengguan2720的博客 2989

【Qt入门】详解QMouseEvent与QKeyEvent

在图形用户界面(GUI)编程中,事件处理是一个至关重要的部分。Qt 作为一个强大的跨平台 C++ 应用程序框架,提供了丰富的事件处理机制,其中 QMouseEvent 和 QKeyEvent 是两个主要用于处理鼠标和键盘事件的类。理解和掌握这两个类的使用方法,对于开发响应用户输入的交互式应用程序至关重要。本文将详细介绍 QMouseEvent 和 QKeyEvent 的成员函数及其作用,并通过示例代码展示如何处理这些事件。

m0_62599305的博客 1415

Qt扫盲-QMouseEvent 鼠标事件

当在QWidget窗口内的鼠标按钮被按下或释放,或者鼠标光标被移动时,就会发生鼠标事件。鼠标按下释放没有什么特殊的,但是鼠标移动事件比较特殊,只有当鼠标按钮被按下时,鼠标移动事件才会发生,除非使用 QWidget::setMouseTracking()函数去启用了鼠标跟踪。如果禁用了鼠标跟踪(默认),则只有在鼠标移动过程中至少按下一个鼠标按钮时,Widget才会接收鼠标移动事件。如果启用了鼠标跟踪,即使没有按下按钮,widget也会接收鼠标移动事件。

洪源兄 2964

5G核心技术:N3与N4接口深度解析

5G网络中,N3和N4接口是实现用户数据传输的核心。N3接口是gNB与UPF之间的用户面通道,采用GTP-U协议封装数据,通过UDP/IP传输,确保低时延和业务隔离。N4接口是SMF与UPF之间的控制面链路,基于PFCP协议下发转发规则(FAR/TDR/QER/URR),实现精细化流量控制。二者协同工作:N4下发策略(如QoS、计费规则),N3执行数据转发,共同支持5G三大场景(eMBB/uRLLC/mMTC),体现控制与转发分离(CUPS)架构优势。

Qinti_mm的博客 1634

西门子S7-1200控制伺服/步进电机方法与接线(全)

西门子S7-1200控制伺服/步进电机方法与接线(全) 伺服/步进电机在非标自动化控制中十分常用,但作者发现在各类开源网站上很少有人做西门子1200PLC控制伺服/步进电机的教程,于是今天想着跟大家分享一下。 本文共分为一下几个四个内容。 文章目录西门子S7-1200控制伺服/步进电机方法与接线(全)前言一、准备二、接线1.PLC接线:2.伺服接线:3. 步进电机的接线:三、代码组态代码四、可能出现的问题 前言 工程控制常用到三项异步电机、直流电机等,但他们都无法准确的控制电机角度;于是有了步进电机、

weixin_46060068的博客 7万+

QT从入门到入土(七)——鼠标事件

引言 个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种: 在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。 系统自动发生,比如计时器事件(timerEvent)等。 在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个后面会提到),则会被event函数发放到相应的

jy_1005的博客 2368

2.6 SST的核心性能指标体系

本文构建了固态变压器(SST)的核心性能指标体系,涵盖电气性能、可靠性、经济性和环境适配性四大类指标。电气性能指标包括运行效率(≥97%)、功率密度(≥900kVA/m³)、谐波畸变率(≤3%)等关键参数;可靠性指标设定MTBF≥43800h、年均故障率≤1.2次/年等标准;经济性指标对比分析了初始购置成本(45-55万元)和全生命周期成本(48-55万元);环境适配性指标则明确了温度、海拔等工况要求。该体系采用量化公式和国标限值,为SST的性能测试、选型和优化提供了统一标准。

技术工作者 602

【QT】鼠标按键事件 - QMouseEvent & QKeyEvent

介绍事件的概念以及事件的处理;QKeyEvent (按键事件)、QMouseEvent (鼠标事件)

YoungMLet的博客 9753

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

系列文章目录 一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 文章目录系列文章目录前言一、配置CubeMX二、逻辑代码部分 前言 这次我用的板子是一个用STM32F103C8T6作为主控芯片的一个数据采集卡,两个LED灯连接的引脚是PB3与PB4,TX与RX引脚分别是PA9和PA10。 一、配置CubeMX 1、新建工程; 2、配置时钟源,在RCC里面的HSE配置的是晶振时钟; 3、配置程序烧录引脚SYS为SWD模式; 4、配置GPIO口,配置一个LE

遗忘丶的博客 1万+

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 837

QMouseEvent

QMouseEvent

xie__jin__cheng的博客 1393

038、OIS 光学防抖原理与调试:陀螺仪数据融合、Lens Shift OIS 的闭环控制

本文分享了OIS光学防抖系统的调试经验和关键技术要点。作者通过一个"呼吸感"Bug案例,揭示了陀螺仪数据融合和闭环控制的重要性。系统介绍了OIS的三个关键层次:传感器层(陀螺仪特性)、控制层(复合算法)和执行层(闭环控制)。重点讲解了陀螺仪数据融合的互补滤波实现、Lens Shift闭环控制的PID优化策略(包括积分抗饱和和微分滤波),以及前馈补偿的应用。最后总结了调试中的关键问题:数据同步、霍尔校准、温度补偿和性能评估方法,并给出实用建议:平衡算法复杂度与性能、预留带宽余量、重视产线校准等。文章强调OIS

sundong_81的博客 262

QMouseEvent 鼠标事件

1、QMouseEvent中的坐标[喝小酒的网摘]http://blog.hehehehehe.cn/a/17083.htm QMouseEvent中保存了两个坐标,一个是全局坐标,当然另外一个是局部坐标。 全局坐标(globalPos())即是桌面屏幕坐标(screen coordinates),这个跟windows下的调用getCursorPos函数得到的结果一致。 局部坐标(pos()

证券指标的专栏 5271

【推荐100个unity插件】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果

Unity内置渲染管线毛发着色器实现 摘要:本文介绍了Unity内置渲染管线下的毛发着色器实现方案。该方案通过多层渲染技术模拟毛发效果,支持基础光照模型(环境光、漫反射和镜面反射),提供毛发长度调节功能。主要包含10个渲染通道,采用逐步增加的FURSTEP参数(0.05-0.55)分层渲染毛发,每层使用相同的着色器代码但不同参数值。该实现仅适用于内置渲染管线,不支持毛发动态效果,代码结构简洁,通过FurHelper.cginc包含核心着色逻辑。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2676

【RT-DETR有效改进】手把手带你调参RT-DETR,1:1复现官方版本实验环境

本文是带大家进行调参,利用ultralytics仓库1:1复现RT-DETR官方实验环境,从而在后期发表论文 的时候省去一些不必要的麻烦,例如被审稿人提出质疑,本文的调参内容均有依据,根据RT-DETR官方Github上发布的版本进行设置本文的调参以ResNet18为例,其余的何其的调参基本一致。RT-DETR剑指论文专栏,持续复现各种顶会内容——论文收割机RT-DETR。

Snu77的博客 9935

Qt QMouseEvent鼠标事件简介

一、QMouseEvent的详细描述 首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。 QMouseEvent类包含了用于描述鼠标事件的参数。 当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。 鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidget::setMouseTracking()函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的QT鼠标事

芒种、的博客 1808

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QT::QMouseEvent

QMouseEvent类参考 QMouseEvent类用于描述鼠标事件 include 继承于QInputEvent. 公有函数: QMouseEvent ( Type type, const QPoint & position, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modif

Free_Program_1314的专栏 2万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【转】QMouseEvent鼠标事件简介

首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。 以下内容来自QMouseEvent的API文档。 1. QMouseEvent的详细描述 QMouseEvent类包含了用于描述鼠标事件的参数。 当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。 鼠标移动事件只会

xuzheng11332的博客 1万+

QMouseEvent鼠标事件简介

首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。QMouseEvent类包含了用于描述鼠标事件的参数。当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidget::setMouseTracking()函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的QT鼠标事件;

QtCompany的博客 1303

QT 事件系统之QMouseEvent鼠标事件

概述 在Qt中,鼠标事件被封装成.QMouseEvent对象,QMouseEvent中包含一些参数,用描述鼠标事件。 在QT中,鼠标事件包含:鼠标按键按下,鼠标按键释放,鼠标双击事件,鼠标移动事件。 分别由下面的event handler来处理: virtual void mousePressEvent(QMouseEvent *event); virtual void mouseReleaseE...

qqq1111e的博客 1万+

QT QMouseEvent 鼠标事件

鼠标移动时会检测所有按下的键,而这时使用QMouseEvent 的 button()函数无法获取哪个按钮被按下,只能使用buttons()函数,下面使用的是buttons()和Qt::LeftButton 进行按位与的方法来判断是否是鼠标左键按下。 if(event->buttons() & Qt::LeftButton) ...

qq_40110291的博客 879

【Qt5】QMouseEvent的globalPos

全局坐标是相对于整个屏幕的坐标系,而不是相对于应用程序窗口或控件的坐标系。它可以用来确定鼠标事件发生的具体位置,无论鼠标在屏幕上的位置如何。QMouseEvent的globalPos()函数是用于获取鼠标事件发生时的全局坐标。它返回一个QPoint对象,表示鼠标事件的全局位置。可以使用globalPos()函数来获取鼠标事件的全局坐标,并根据这个坐标来执行相应的操作,比如窗口移动、绘制图形或处理其他交互行为。2023年12月14日,周四下午。

m0_61629312的博客 751

QMouseEvent鼠标事件

Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理 转载于:https://www.cnblogs.com/liming19680104/p/10355082.html...

weixin_30430169的博客 149
上一篇: QGraphicsView 坐标系统详解
下一篇: AudioLM音频生成模型 简介
低配天才
博客等级 码龄10年 277粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值