窗口内跟踪鼠标问题
1、MainWidow跟踪鼠标
要跟踪鼠标在窗口内移动时的位置,首先要重写鼠标移动事件:
#include <QMouseEvent>
...
void mouseMoveEvent(QMouseEvent *event);
但是出于节约资源的目的,此时只有按下鼠标移动才会有效。如果不想按鼠标,需要在窗口构造函数中加上鼠标追踪:
this->setMouseTracking(true); //或setMouseTracking(true);
但是只加上这句并没有作用,这是因为在MainWidow下还有个子类centralWidget,在MainWidow的构造函数中还需要加上centralWidget的鼠标追踪:
ui->centralWidget->setMouseTracking(true);
在ui文件中也可以看到MainWindow与centralWidget的关系:
2、QWidget跟踪鼠标
对于QWidget只需要重写鼠标移动事件,并在其构造函数中加上鼠标追踪即可,因为QWidget没有centralWidget子类。