我有一个派生自QGraphicsView
的类,其中包含QGraphicsItem
个派生元素。我希望这些元素在鼠标光标悬停在它们上面时改变颜色,所以我实现了hoverEnterEvent
(和hoverLeaveEvent
):
void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
update (boundingRect());
}
但是,永远不会执行此事件处理程序代码。我明确启用了鼠标跟踪:
MyGraphicsView::MyGraphicsView(MainView *parent) :
QGraphicsView(parent)
{
setMouseTracking(true);
viewport()->setMouseTracking(true);
...
}
仍然没有运气。我做错了什么?
答案 0 :(得分:25)
修正了它。我需要在setAcceptHoverEvents(true)
派生类的构造函数中使用QGraphicsItem
。
答案 1 :(得分:2)
就我而言,如果我在 QGraphicsView 类的实现中覆盖 mouseMoveEvent ,则悬停事件将无法工作。我通过添加对
的调用来修复此问题QGraphicsView::mouseMoveEvent(event);
将事件传播给父母,父母又将其发送给所有场景项目。