QT 事件过滤器 mouseEvent->pos().x() 始终为零,但 mouseEvent->pos().y() 工作正常



mouseEvent->pos((.x((始终返回 0. mouseEvent->pos((.y(( 鼠标移动时更新

bool Module3::eventFilter(QObject *obj, QEvent *event( { QMouseEvent *mouseEvent = static_cast(event(; if(obj ==scene && event->type(( == QEvent::GraphicsSceneMouseMove({ QToolTip::showText(mouseEvent->pos((,QString::number(mouseEvent->pos((.x((( +  ", " + QString::number( mouseEvent->pos((.y((((;  }  返回假; }

你有未定义的行为。 如果QEvent::GraphicsSceneMouseMoveevent->type()则事件的真实类型QGraphicsSceneMouseEvent*而不是QMouseEvent*

尝试。。。

if (obj == scene && event->type() == QEvent::GraphicsSceneMouseMove) {
if (auto *mouseEvent = dynamic_cast<QGraphicsSceneMouseEvent *>(event)) {
QToolTip::showText(mouseEvent->scenePos().toPoint(),QString::number(mouseEvent->pos().x()) + 
", "  + QString::number( mouseEvent->pos().y()));
}
}
return false;

最新更新