cthu Qt中mouseMoveEvent无效

转载 2016年06月01日 10:13:45

最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。


在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到,需要setMouseTracking(true)。


bool mouseTracking


这个属性保存的是窗口部件跟踪鼠标是否生效。


如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件。


如果鼠标跟踪生效,如果没有按键被按下,这个窗口部件也会接收鼠标移动事件。


QWidget中使用是没有问题的,但是,对于QMainWindow即使使用了setMouseTracking(true)依然无法捕捉到鼠标没有按下的移动,只有在鼠标按下是才能捕捉。


解决办法:要先把QMainWindow的CentrolWidget使用setMouseTracking(true)开启移动监视。然后再把QMainWindow的setMouseTracking(true)开启监视。之后就一切正常了。


原因:CentrolWidget是QMainWindow的子类,你如果在子类上响应鼠标事件,只会触发子类的mouseMoveEvent,根据C++继承和重载的原理,所以子类也要setMouseTracking(true); 所以如果你想响应鼠标事件的控件被某个父控件包含,则该控件及其父控件或容器也需要setMouseTracking(true);

Qt中mouseMoveEvent无效

Qt中mouseMoveEvent无效 最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。 在Qt中要捕捉鼠标移动事件需要重写MouseMoveEv...
  • jolin678
  • jolin678
  • 2016年07月29日 18:56
  • 3870

关于Qt控件坐标计算和mouseMoveEvent不响应的问题

拉伸某个控件的功能需要这些知识
  • qq_32250025
  • qq_32250025
  • 2017年08月31日 14:21
  • 260

Qt 中 mouseMoveEvent

Qt 中对鼠标事件进行处理,可以在QWidget的子类中继承 mouseMoveEvent()函数来实现。 protected: void mouseMoveEvent(QMouseEvent * ...
  • skc361
  • skc361
  • 2014年01月07日 18:00
  • 1339

QT类之事件mousePressEvent以及mouseMoveEvent

将一串文字(Label控件)可以随着手标的拖动而到指定位置,重写mousePressEvent函数以及mouseMoveEvent函数: 问题解决步骤(逻辑):           首先分析题目需...
  • qq_1223113455
  • qq_1223113455
  • 2016年05月20日 16:51
  • 3055

setMouseTracking(true)无法跟踪鼠标事件

问题环境: 在使用QWidget创建无边框窗体WidgetA时,要实现窗体可改变大小,在边框处要相应的改变鼠标样式,如:Qt::SizeBDiagCursor等,因此需要对窗体鼠标事件进行监...
  • jin_huan11
  • jin_huan11
  • 2015年11月24日 20:21
  • 2267

QT mouseMoveEvent事件(qmainwindow内追踪鼠标事件事件)

最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。         在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMo...
  • yu132563
  • yu132563
  • 2016年11月03日 23:47
  • 4210

mouseMoveEvent 函数中判断鼠标那个按键按下

我们可以用 if (event->button() == Qt::LeftButton) { TODO: } 来判断鼠标那个键按下,但是在mouseMoveEvent函数中,event->butto...
  • qq_30126571
  • qq_30126571
  • 2017年11月07日 11:11
  • 186

Qt中mouseMoveEvent在MainWindow中使用

最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。         在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMove...
  • lt4959
  • lt4959
  • 2013年10月09日 11:23
  • 1058

从 QGraphicsItem 的 hover 说开来

从 QGraphicsItem 的 hover 说开来 取个标题真难啊,就这么着吧。 起源 来自 CSDN 论坛的网友问题: 在GraphicsItem 中我设置了 setAcceptHo...
  • ilvu999
  • ilvu999
  • 2012年10月09日 01:07
  • 1170

Qt Painter和Image保存

void playPainter() { QSize size(200,200); QImage picture(size, QImage::Format_RGB32); p...
  • RoyMuste
  • RoyMuste
  • 2014年02月26日 19:17
  • 1699
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cthu Qt中mouseMoveEvent无效
举报原因:
原因补充:

(最多只允许输入30个字)