2010-05-17 31 views
2

我試圖將自定義事件發送到現有的QGraphicsScene。 第一個事件正在與所需的位置在現場被解僱。從現在開始,所有其他事件即使與其他地點一起提供,也會進入同一地點(作爲第一個事件)。 我手動點擊場景內的某個地方後,它會「重新啓動」,並在正確的位置接受下一個自定義事件(所有其他人仍然會去錯誤的地方)。發送自定義鼠標事件到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

找到了!

只好在最後添加一行:

m_scene->mouseGrabberItem()->ungrabMouse(); 
+0

你可以提供一個什麼道理呢?正如我寫的,我無法推斷出這是否是偶然發生的事情,巧合還是真正的解決方案。 – IInspectable 2014-08-08 09:25:02