QGraphicsItem不接收鼠标悬停事件

时间:2010-05-30 21:23:16

标签: c++ qt events qgraphicsview qgraphicsitem

我有一个派生自QGraphicsView的类,其中包含QGraphicsItem个派生元素。我希望这些元素在鼠标光标悬停在它们上面时改变颜色,所以我实现了hoverEnterEvent(和hoverLeaveEvent):

void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
    update (boundingRect());
}

但是,永远不会执行此事件处理程序代码。我明确启用了鼠标跟踪:

MyGraphicsView::MyGraphicsView(MainView *parent) :
    QGraphicsView(parent)
{
    setMouseTracking(true);
    viewport()->setMouseTracking(true);
    ...
}

仍然没有运气。我做错了什么?

2 个答案:

答案 0 :(得分:25)

修正了它。我需要在setAcceptHoverEvents(true)派生类的构造函数中使用QGraphicsItem

答案 1 :(得分:2)

就我而言,如果我在 QGraphicsView 类的实现中覆盖 mouseMoveEvent ,则悬停事件将无法工作。我通过添加对

的调用来修复此问题
QGraphicsView::mouseMoveEvent(event);

将事件传播给父母,父母又将其发送给所有场景项目。