[英]QGraphicsItem doesn't receive mouse hover events
我有一个派生自QGraphicsView
的类,它包含QGraphicsItem
派生的元素。 我希望这些元素在鼠标光标悬停在它们上面时改变颜色,所以我实现了hoverEnterEvent
(和hoverLeaveEvent
):
void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
update (boundingRect());
}
但是,此事件处理程序代码永远不会执行。 我明确启用了鼠标跟踪:
MyGraphicsView::MyGraphicsView(MainView *parent) :
QGraphicsView(parent)
{
setMouseTracking(true);
viewport()->setMouseTracking(true);
...
}
不过,没有运气。 我究竟做错了什么?
固定它。 我需要在我的QGraphicsItem
派生类的构造函数中使用setAcceptHoverEvents(true)
。
在我的例子中,如果我在QGraphicsView类的实现中覆盖mouseMoveEvent ,则悬停事件将不起作用。 我通过添加一个调用来解决这个问题
QGraphicsView::mouseMoveEvent(event);
它将事件传播给父母,父母又将其发送给所有场景项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.