繁体   English   中英

QGraphicsItem不接收鼠标悬停事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM