Qt中mouseMoveEvent无效
来源:互联网 发布:如何加入网络作家协会 编辑:程序博客网 时间:2024/06/15 05:13
终于找到解决方法了,留着备用,本文系原文转载:
最近用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);
转载地址:https://www.cnblogs.com/cthu/p/5114408.html
- Qt中mouseMoveEvent无效
- Qt中mouseMoveEvent无效
- Qt中mouseMoveEvent无效
- cthu Qt中mouseMoveEvent无效
- Qt 中 mouseMoveEvent
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent有时没有触发?
- Qt中mouseMoveEvent和mousePressEvent实现鼠标滑动换label颜色
- Qt中mouseMoveEvent和mousePressEvent实现鼠标滑动换label颜色
- qt 在mouseMoveEvent 中调用QDrag.exec() 后不会响应本控件的mouseReleaseEvent
- qt中mousemoveevent和mousepressevent实现鼠标滑动换label颜色...
- 解决Qt中,只有鼠标左键处于单击状态时才会捕捉mouseMoveEvent的问题
- Qt中mouseMoveEvent和mousePressEvent实现鼠标滑动换label颜色
- Centos搭建ceph+++一、虚拟机环境准备
- 欢迎使用CSDN-markdown编辑器
- ObjectBox[九] 数据模型变更
- 非常详细的Echars介绍
- JPEG系列二 JPEG文件中的EXIF(下)
- Qt中mouseMoveEvent无效
- 关于Neo4j和Cypher批量更新和批量插入优化的5个建议
- jq实现table的列分页
- BZOJ4530 BJOI 2014 大融合 LCT维护子树信息
- 二分查找算法(java)二分搜索
- OpenGL结合水池模型的动态水面实战
- 搭建多个节点的hadoop集群环境(CDH)
- 根据选择状态展示对应数据列表
- Fragment全解析系列(一):那些年踩过的坑