我已经重新实现了 hoverEnterEvent 但由于某种原因它没有被调用 :-( 我的方法在这一点上非常简单:
void LinteItem::hoverEnterEvent(QGraphicsSceneHoverEvent * event) {
qDebug("Mouse hovered");
QGraphicsItem::hoverEnterEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
我在视图上设置了 mouseTracking。我可以使用 mouseMove 等放置新的 LinteItems,所以我知道跟踪工作。
我在构造函数中有以下内容:
setFlags(QGraphicsItem::ItemIsSelectable |
QGraphicsItem::ItemIsMovable |
QGraphicsItem::ItemSendsGeometryChanges);
setAcceptHoverEvents(true);
Run Code Online (Sandbox Code Playgroud)
知道为什么我没有收到事件吗?我正在使用 Qt 5.5 顺便说一句
例如,如果您的覆盖自定义QGraphicsView鼠标事件处理程序调用基类的原始处理程序,它应该可以工作
void CustomGraphicsView::mouseMoveEvent(QMouseEvent *event)
{
// do something...
// send the event to graphics scene and items
QGraphicsView::mouseMoveEvent(event);
}
Run Code Online (Sandbox Code Playgroud)