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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top