参考链接:
1、http://blog.csdn.net/yu132563/article/details/53028226
2、http://www.cnblogs.com/lomper/p/4249575.html
最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。
bool mouseTracking
这个属性保存的是窗口部件跟踪鼠标是否生效。
如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件。
如果鼠标跟踪生效,如果没有按键被按下,这个窗口部件也会接收鼠标移动事件。
原因:CentrolWIdget是QMainWindow的子类,你如果在子类上响应鼠标事件,只会触发子类的mouseMoveEvent,根据C++继承和重载的原理,所以子类也要setMouseTracking(true); 所以如果你想响应鼠标事件的控件被某个父控件包含,则该控件及其父控件或容器也需要setMouseTracking(true);
ui->centralWidget->setMouseTracking(true);
setMouseTracking(true); //这是激活整个窗体的鼠标追踪
ui->pBtnMenu->setMouseTracking(true); //进入某个按钮时,鼠标追踪属性失效,因此我们也需要激活该按钮的鼠标追踪功能
ui->pBtnTest->setMouseTracking(true);