Ton*_*ony 19 c++ events qt qgraphicsview qgraphicsitem
我有一个派生自的类QGraphicsView,其中包含 - QGraphicsItem派生元素.我希望这些元素在鼠标光标悬停在它们上面时改变颜色,所以我实现了hoverEnterEvent(和hoverLeaveEvent):
void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
update (boundingRect());
}
Run Code Online (Sandbox Code Playgroud)
但是,此事件处理程序代码永远不会执行.我明确启用了鼠标跟踪:
MyGraphicsView::MyGraphicsView(MainView *parent) :
QGraphicsView(parent)
{
setMouseTracking(true);
viewport()->setMouseTracking(true);
...
}
Run Code Online (Sandbox Code Playgroud)
不过,没有运气.我究竟做错了什么?
Ton*_*ony 27
固定它.我需要setAcceptHoverEvents(true)在我的QGraphicsItem-derived类的构造函数中使用.
小智 7
就我而言,如果我在QGraphicsView类的实现中覆盖mouseMoveEvent,则悬停事件将不起作用。我通过添加一个调用来解决这个问题
QGraphicsView::mouseMoveEvent(event);
Run Code Online (Sandbox Code Playgroud)
它将事件传播到父级,父级又将其发送到所有场景项目。