我正在尝试将自定义事件发送到现有的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多次发送示例代码。
答案 0 :(得分:1)
发现它!
必须在最后添加这一行:
m_scene->mouseGrabberItem()->ungrabMouse();