zoukankan      html  css  js  c++  java
  • Qt中mouseMoveEvent无效

    最近用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);

     

    转载地址:http://blog.csdn.net/hcj116/article/details/17334473

  • 相关阅读:
    t
    溢出
    https://stackoverflow.com/questions/45591594/fetch-does-not-send-headers
    显示在用户屏幕上的缩略图
    cache buffer
    LZW
    t
    指针悬挂
    使用Linux服务器来通过网络安装和激活Windows 7 —— 一些基本原理
    在C++中如何动态分配一个二维数组
  • 原文地址:https://www.cnblogs.com/cthu/p/5114408.html
Copyright © 2011-2022 走看看