[英]QT eventFilter mouseEvent->pos().x() always zero but mouseEvent->pos().y() working fine
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())); } return false; }
你有未定義的行為。 如果event->type()
是QEvent::GraphicsSceneMouseMove
那么真正的事件類型是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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.