Pregunta

Estoy utilizando el marco de Qt Vista Gráfica para crear una escena y adjuntar varios puntos de vista a la misma escena, en donde estos puntos de vista hacen una escena 3D OpenSceneGraph como fondo y los dibujos 2D son una especie de superposiciones.

Estoy intentando / eventos clave de intercepción de ratón en mi clase OverlayViewport (hereda QGraphicsView) y navegar por la escena 3D en consecuencia. A continuación se muestra un controlador de eventos de ejemplo:

void OverlayViewport::mouseMoveEvent( QMouseEvent * event )
{
    QGraphicsView::mouseMoveEvent(event);
    if (event->isAccepted())
    {
        return;
    }

    3D_Scene_Stuff_Code();
}

Pero los acontecimientos siempre se aceptan, por lo tanto, mi código escena 3D cosas nunca se ejecuta. Si quito el cheque isAccepted (), el código se ejecuta siempre.

Lo que quiero lograr es, dejar la escena haga su selección cosas por el estilo, arrastrando vs, y si no hace nada (no acepta el evento), hacer mis cosas 3D.

Por lo tanto, aquí están mis preguntas:
1 - ¿Estoy en el camino equivocado aquí
2 - Sección deben enviar los eventos a la escena que la vista está fijada Y NO mis cosas si el evento no es aceptada por la escena que
3 - Si no es 2, ¿cómo debo proceder

Saludos.

¿Fue útil?

Solución

He encontrado el culpable. Parece que esto fue un error en Qt. QGraphicsView no establece el indicador aceptado de mouseMoveEvents adecuadamente. Esto sucede por mouseMoveEvents solamente, los otros eventos están bien. Se informa a Qt y en espera de ser fijo.

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