QGraphicsItem no recibe eventos coloque el cursor
-
05-10-2019 - |
Pregunta
I tiene una clase derivada de QGraphicsView
, que contiene elementos QGraphicsItem
derivados. Quiero que estos elementos al cambio de color cada vez que los elementos emergentes cursor del ratón sobre ellos, por lo que he implementado hoverEnterEvent
(y hoverLeaveEvent
):
void MyGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
update (boundingRect());
}
Sin embargo, este código de controlador de eventos nunca se ejecutó. He permitido explícitamente seguimiento del ratón:
MyGraphicsView::MyGraphicsView(MainView *parent) :
QGraphicsView(parent)
{
setMouseTracking(true);
viewport()->setMouseTracking(true);
...
}
Sin embargo, no hubo suerte. ¿Qué estoy haciendo mal?
Solución
arreglaron. Necesito usar setAcceptHoverEvents(true)
en el constructor de mi clase QGraphicsItem
derivados.
Otros consejos
En mi caso, los acontecimientos de la libración no funcionaría si overrode mouseMoveEvent en mi aplicación de la QGraphicsView clase. He arreglado esto añadiendo una llamada a
QGraphicsView::mouseMoveEvent(event);
, que propaga el evento para los padres, que a su vez lo envió a todos los elementos de la escena.