setMouseTracking(true) 还是不发接收到鼠标移动事件
时间: 2024-02-28 20:56:53 浏览: 16
如果调用了 `setMouseTracking(true)` 还是无法接收到鼠标移动事件,可能是因为你没有将鼠标移动事件交给 Qt 处理。在 QWidget 中,只有在鼠标移动事件被接受后,才能够触发鼠标移动事件。因此,需要在重写的 `mouseMoveEvent(QMouseEvent *event)` 函数中调用 `event->accept()` 来接受鼠标移动事件。具体步骤如下:
```cpp
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
void mouseMoveEvent(QMouseEvent *event) override
{
// 处理鼠标移动事件
QPoint pos = event->pos();
qDebug() << "Mouse move: x=" << pos.x() << ", y=" << pos.y();
// 接受鼠标移动事件
event->accept();
}
};
// 在需要监听鼠标移动事件的地方添加 MyWidget 对象
MyWidget *widget = new MyWidget(parentWidget);
widget->setMouseTracking(true); // 设置鼠标跟踪,保证能够接收到鼠标移动事件
widget->show();
```
这样就可以监听鼠标移动事件了。如果还有问题,请提供更多的代码信息,让我更好地帮助你解决问题。