QGraphicsView принятые события - PullRequest
1 голос
/ 01 февраля 2010

Я использую каркас Qt Graphics View для создания сцены и прикрепления нескольких видов к одной и той же сцене, где эти виды визуализируют 3D-сцену с открытым сценографом в качестве фона, а 2D-рисунки являются наложениями.

Я пытаюсь перехватить события мыши / ключа в моем классе OverlayViewport (наследует QGraphicsView) и соответственно перемещаться по 3D-сцене. Ниже приведен пример обработчика события:

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

    3D_Scene_Stuff_Code();
}

Но события всегда принимаются, поэтому мой код материала 3D-сцены никогда не выполняется. Если я уберу проверку isAccepted (), мой код всегда будет выполняться.

То, чего я хочу достичь, это позволить сцене делать свои вещи, такие как выделение, перетаскивание и, если она ничего не делает (не принимает событие), делать мои 3D-вещи.

Итак, вот мои вопросы:
1 - Я здесь не по тому пути?
2 - Должен ли я пересылать события на сцену, к которой прикреплен вид, и делать свои вещи, если событие не принято сценой?
3 - Если нет 2, как мне поступить?

С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 15 марта 2010

Я нашел виновника. Похоже, это была ошибка в Qt. QGraphicsView не устанавливает соответствующий принятый флаг mouseMoveEvents. Это происходит только для mouseMoveEvents, остальные события в порядке. Он сообщается в Qt и ожидает исправления.

...