QT::QMouseEvent

QT的事件监控 1、QMouseEvent中的坐标 QMouseEvent中保存了两个坐标,一个是全局坐标,当然另外一个是局部坐标。 全局坐标(globalPos())即是桌面屏幕坐标(screen coordinates),这个跟windows下的调用getCursorPos函数得到的结果一致。 局部坐标(pos())即是相对当前active widget的坐标,左上角坐标为(0, 0)。 补充一个 阅读详情
QMouseEvent类参考
QMouseEvent类用于描述鼠标事件
include<QMouseEvent>
继承于QInputEvent.
公有函数:
QMouseEvent ( Type type, const QPoint & position, Qt::MouseButton button,
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )

QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, 

      Qt::MouseButton button,Qt::MouseButtons buttons, 

    Qt::KeyboardModifiers modifiers )


Qt::MouseButton button () const
Qt::MouseButtons buttons () const
const QPoint & globalPos () const
int globalX () const
int globalY () const
const QPoint & pos () const
QPointF posF () const
int x () const
int y () const

详细描述:
QMouseEvent类包含了用于描述鼠标事件的参数。当在一个窗口里按住鼠标按键,或移动,或释放就会产生鼠标事件。
鼠标移动事件只会在按下鼠标按键的情况下才会发生 ,除非通过显式调用QWidget::setMouseTracking()函数来开启
鼠标轨迹(这种情况下,只要鼠标指针在移动,就会产生一系列的QT处理事件),在一个窗口中,当鼠标按键被按下时,
QT会自动捕捉鼠标轨迹,鼠标指针所在的父窗口会继续接受鼠标事件,直到最后一个鼠标按键被释放。

一个鼠标事件包含一些指定的接受标志用于指出该事件是否会被接收和处理 ,如果鼠标指针所在的父窗口不接收该事件
可以调用函数ignore()予以忽视。多个重叠的窗口在实现里好比一个递归的倒立树,鼠标事件会沿着鼠标指针所在的父窗口的链表
向上传递,直到某个窗口调用accept()函数进行事件处理,或者改事件会 被过滤销毁掉。
如果一个鼠标事件传递给鼠标指针所在的窗口,而该窗口的QT::WA_NoMousePropagation位置为TRUE,则该事件不会通过父窗口继续向上传递

键盘的键位改变事件可以通过调用modifiers()函数而知道,该函数继承于QInputEvent类。

可以通过函数pos(),x(),y()得知鼠标事件发生时,鼠标指针相对于窗口的位置。如果把移动窗口作为一次鼠标事件,
可以通过函数blobal()返回的全局坐标值避免窗口的抖动。 QWidget::setEndabled()被用于开启/禁止对应的窗口是否接受键盘和鼠标事件。
可以通过重新实现QWidget事件句柄函数QWidget::mousePressEvent(),QWidget::mouseReleaseEvent(),QWidget::mouseDoubleClickEvent(),
QWidget::mouseMoveEvent,来让我们自己定义的窗口接受鼠标事件。


成员函数描述:
QMouseEvent::QMouseEvent ( Type type, const QPoint & position, Qt::MouseButton button,
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
初始化一个mouseEvent对象,
参数type必须是QEvent::MouseButtonPress, QEvent::MouseButtonRelease,QEvent::MouseButtonDblClick, or QEvent::MouseMove其中的一个。
参数position是鼠标指针相对于窗口的位置,
参数button作为鼠标事件所代表的值可以从QT::MouseButton的枚举列表中查找。如果参数type是一次MouseMove事件,
那么相对应的button取值就该为QT::NoButton.
在一次QT事件过程中,鼠标和键盘的状态位可以通过参数buttons和modifiers指定。
通过globalPos()的返回值来初始化QCursor::pos()有时候不是很恰当,可以通过其他的构造函数来显示指定全局坐标值。
(附注:要区分参数button 和 参数buttons)

QMouseEvent::QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, 

  Qt::MouseButton button,Qt::MouseButtons buttons, 

  Qt::KeyboardModifiers modifiers )


初始化一个mouseEvent对象,
参数type必须是QEvent::MouseButtonPress, QEvent::MouseButtonRelease,QEvent::MouseButtonDblClick, or QEvent::MouseMove其中的一个。
参数pos是鼠标指针相对于接受该鼠标事件窗口的位置,鼠标指针的全局坐标值可以通过globalPos指定。
参数buttons作为鼠标事件所代表的值可以从QT::MouseButton的枚举列表中查找。如果参数type是一次MouseMove事件,
那么相对应的buttons取值就该为QT::NoButton.
参数buttons用于标示在QT事件过程中所有的按键状态位,参数modifiers用于标示键盘按键切换期间的状态位。

Qt::MouseButton QMouseEvent::button () const
返回导致QT事件的button值,该值可以从QT::MouseButton的枚举列表中查找,当为鼠标指针移动事件时,返回值总是为QT::NoButton.

Qt::MouseButtons QMouseEvent::buttons () const
当一个QT事件生成时返回button状态位,该状态位联合Qt::LeftButton, Qt::RightButton, Qt::MidButton 并执行 或(OR | )操作的结果。
对于鼠标指针移动事件,返回的总是按键被按下的状态位;
当按下鼠标按键或者双击时,返回的总是导致该事件的按键状态位;
对于鼠标按键释放所导致的事件,则不会执行OR操作。

const QPoint & QMouseEvent::globalPos () const
返回QT事件过程中鼠标指针的全局坐标值,对于异步窗口系统例如X11这是一个很重要的特性,无论何时移动窗口作为对鼠标事件的响应时,
globalPos()返回的当前鼠标指针坐标值和QCursor::pos()的返回值是有区别的,可以通过调用QWidget::mapToGlobal(pos())在窗口坐标
和全局坐标系之间进行转换。

int QMouseEvent::globalX () const
返回QT事件过程中横坐标X的全局坐标值。

int QMouseEvent::globalY () const
返回QT事件过程中横坐标Y的全局坐标值

const QPoint & QMouseEvent::pos () const
返回鼠标指针和接受该鼠标事件窗口的相对位置,如果把移动窗口作为一次对鼠标事件的响应,那么通过调用globalPos()返回的全局坐标值
可以避免窗口抖动。

QPointF QMouseEvent::posF () const
返回鼠标指针和接受该鼠标事件窗口的相对位置,该坐标值用float类型表示可以增加精确度,如果把移动窗口作为一次对鼠标事件的响应,
那么通过调用globalPos()返回的全局坐标值可以避免窗口抖动。该函数在QT4.4中有介绍。

int QMouseEvent::x () const
返回鼠标指针和接收鼠标事件窗口的相对位置的X轴坐标值。

int QMouseEvent::y () const
返回鼠标指针和接收鼠标事件窗口的相对位置的Y轴坐标值

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

相关推荐

Qt中mouseMoveEvent(QmouseEvent *event)使用探讨

Qt中mouseMoveEvent(QmouseEvent *event)使用探讨 在学习网络教程过程中,尝试使用Qpainter制作一个涂鸦板,需要使用QmouseEvent ,按照教程,涂鸦板不能绘制曲线,这里做一些总结。教程链接:http://shouce.jb51.net/qt-beginning/21.html 依据链接的教程所述,mouseMoveEvent实现如上,调试是后面加的,代码中判断语句没有执行进来 ui中关于mouseTracking的设置如上(本例中不需要勾选) 问题确认: 1)

Vanceshun的博客 5491

通过代码执行鼠标动作

通过代码执行鼠标动作

m0_54256484的博客 1284

Qt开发——QMouseEvent鼠标事件

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

沉迷单车的追风少年 2611

Qt设置鼠标等待状态和恢复

如下: QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); //等待旋转 QApplication::restoreOverrideCursor();            //恢复 ps:可以建立一个类,构造函数里设置鼠标旋转,析构函数里设置恢复,非常好用~ ...

我不是码农的博客~~~ 1813

【Qt入门】详解QMouseEvent与QKeyEvent

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

m0_62599305的博客 1415

PCB Layout总结

PCB Layout作为硬件设计中的一个环节,也是很重要的一个环节;在硬件电路设计合理的情况下,他其实是影响性能的一个绝对重要的指标。现在很多的PCB Layout工程师都是按照硬件工程师或者PI SI工程师给出的约束规则来完成布局布线的,这些也就是俗称的 “拉线工”。他们重复而机械的完成一块块PCB设计,一段时间设计后,他们中的一些或许已经有了这样的一些经验:哪些要做等长,哪些要走粗、哪些要平...

xydlxd118的博客 2583

Qt自定义鼠标

新手写文章,写得不专业,各位多见谅!主要

Sanguine彬 589

RobotStudio码垛机器人创建过程

首先导入一个IRB2600机器人,移动夹具的本地坐标原点,使原点位置为顶面中心(与法兰盘连接的部位)。对齐夹爪Smart组件的本地坐标和机器人末端法兰盘的坐标...

个人博客 1万+

Qt鼠标事件全面解析:从基础到实战

Qt鼠标事件全面解析:从基础到实战

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 8325

C++游戏开发入门:从环境配置到第一个完整项目

C++ 作为游戏开发领域的关键语言,其学习路径常因语法枯燥而令初学者却步。以项目驱动的方式学编程,能帮助学习者将变量、循环、函数、指针等基础概念融入实际游戏逻辑中,获得即时反馈与完整项目经验。掌握合适的开发环境是高效实践的前提,例如在 Windows 下使用 VS Code 搭配 MinGW-w64 编译器,配合调试器与构建脚本,即可搭建轻量可扩展的 C++ 游戏开发工作流。此类课程通常面向无基础人群,从控制台小游戏逐步过渡到带游戏循环的完整作品,过程中还需关注性能观察、素材授权与版本管理。无论你是刚接触编

weixin_30621959的博客 542

科研党必备:Zotero+Deepseek 打造AI文献阅读助手(附详细插件配置指南)

本文详细介绍了如何利用Zotero和Deepseek打造AI文献阅读助手,提升科研效率。从Zotero基础安装到中文文献处理插件茉莉花的配置,再到Deepseek API的集成与模型选择策略,全面覆盖了AI辅助阅读的关键环节。特别适合需要高效管理海量文献的科研工作者,显著提升文献筛选和分析速度。

backprop5master的博客 424

Qt QMouseEvent鼠标事件简介

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

芒种、的博客 1808

python全栈入门到实战【基础篇 03】入门实操:第一个Python程序 + PyCharm使用 + 输入输出全解析

本文是一篇Python入门教程,主要介绍PyCharm编辑器的安装配置和基础使用,以及Python输入输出语法的实操练习。文章分为四个部分:1)PyCharm的下载安装与基础配置;2)第一个Python程序"Hello World"的编写与运行;3)Python输入输出函数print()和input()的详细讲解;4)个人信息录入系统的实战案例。教程包含大量截图和动图演示,适合Python新手跟随操作,快速掌握编辑器使用和基础语法。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4020

QT 事件系统之QMouseEvent鼠标事件

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

qqq1111e的博客 1万+

智能车图像处理5-入门级分析4 ---环岛的状态机与补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 8235

【Qt】QtCreator远程部署、调试程序

1)QtCreator 工具–> 选项 --> 设备 --> 添加2)设备设置向导选择–> Generic Linux Device --> 开启向导3)填写“标识配置的名称”(随便写)、设备IP、用户名 --> 下一步4)选择配对秘密文件,第一次配对,可以不填写,点击“下一步”5)点击“完成”6)设备添加成功,需要再配置SSH端口号、用户名、密码等7)保存SSH登陆密码:验证类型选择默认“Default”–> “创建新密钥”–> “Test”

郭老二 5193

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

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

dengguan2720的博客 2989

手把手教你学 Simulink (1.3)--Simulink 的模块库及其模块介绍

Simulink 提供了丰富的模块库,涵盖了从基本的信号生成和处理到复杂的数学运算和系统建模的各种功能。通过熟悉这些模块库及其模块,你可以更高效地构建和仿真动态系统。

MHD0815的博客 5150

QT QMouseEvent 鼠标事件

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

qq_40110291的博客 879

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Qt开发】Qt事件(三)-> QMouseEvent 鼠标事件

本文深入解析了Qt框架中的鼠标事件处理机制。首先概述了QMouseEvent在Qt事件系统中的核心地位,详细介绍了其继承体系、事件类型(按下、释放、双击、移动)以及封装的事件信息(坐标系统、按钮状态等)。随后阐述了事件传播流程和过滤机制,包括事件分发、处理控制和优先级设置。在实践应用方面,探讨了拖放操作、交互绘图、自定义控件开发等典型场景,并分享了事件合成、光标控制等高级技巧。最后通过代码示例演示了鼠标单击、释放和双击事件的具体实现方法,展示了如何检测不同鼠标按钮并获取坐标信息。

枫叶丹4的博客 2163

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

QT鼠标事件中的QMouseEvent :e

该代码片段展示了Qt框架中鼠标事件处理机制。在mousePressEvent方法中,参数e是Qt框架自动创建的QMouseEvent类实例,当检测到鼠标左键按下时,框架会调用此方法并传入事件对象。开发者只需重写事件处理方法定义响应逻辑,无需自行创建事件对象或调用事件方法。这体现了Qt的事件驱动编程模型,框架负责事件检测和分发,开发者只需处理感兴趣的事件。

2401_84977420的博客 523

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

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

weixin_34670892的博客 1081

Qt鼠标事件QMouseEvent总结

转自[喝小酒的网摘]http://blog.hehehehehe.cn/a/17083.htm /*---------------------------------------------------------------------------------------------------------*/ 1、QMouseEvent中的坐标 QMouseEvent中保存了两个坐标,一

hjk216的博客 2184

Qt扫盲-QMouseEvent 鼠标事件

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

洪源兄 2964

Qt QMouseEvent鼠标事件与QKeyEvent键盘事件笔记

QMouseEvent鼠标事件&QKeyEvent键盘事件 笔记

love_dear的博客 1473
上一篇: QT: :QWheelEvent
下一篇: QT::QKeyEvent
错_对
博客等级 码龄16年 68粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值