отправка пользовательского события мыши в QGraphicsScene - PullRequest
2 голосов
/ 17 мая 2010

Я пытаюсь отправить пользовательские события в существующую QGraphicsScene. первое событие происходит в сцене с нужным местоположением. с этого момента все остальные события отправляются в то же место (как и первое событие), даже если они были предоставлены в других местах. после того, как я вручную щелкну где-нибудь внутри сцены, она «перезапускается», и следующее пользовательское событие принимается в нужном месте (все остальные все еще идут в неправильное место).

мой код:

qreal sceneX = customX;
qreal sceneY = customY;

QGraphicsView* view = m_scene->views()[0];
QPoint ptView = view->mapFromScene(sceneX, sceneY);
QPoint ptGlobal = view->viewport()->mapToGlobal(ptView);

QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMouseRelease);
event.setScenePos(QPoint(sceneX, sceneY));
event.setPos(QPoint(sceneX, sceneY));
event.setScreenPos(ptGlobal);
event.setButton(Qt::LeftButton);
event.setButtons(Qt::LeftButton);
event.setModifiers(QApplication::keyboardModifiers());

qApp->sendEvent(m_scene, &event);

customX и customY - это произвольные x и y, которые я генерирую на лету. Я отправляю пример кода много раз с различными customX и customY.

1 Ответ

1 голос
/ 17 мая 2010

Нашли!

Пришлось добавить эту строку в конце:

m_scene->mouseGrabberItem()->ungrabMouse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...