2010-05-17 4 views
2

J'essaie d'envoyer des événements personnalisés dans un QGraphicsScene existant. le premier événement est déclenché dans la scène avec l'emplacement souhaité. à partir de maintenant, tous les autres événements vont au même endroit (comme le premier événement) même s'ils ont été fournis avec d'autres emplacements. Après avoir cliqué manuellement quelque part dans la scène, il "redémarre" et l'événement personnalisé suivant est accepté au bon endroit (tous les autres vont toujours au mauvais endroit).Envoyer un événement souris personnalisé dans QGraphicsScene

mon code:

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 et customY ne sont que x et y arbitraires que je produis à la volée. J'envoie l'exemple de code plusieurs fois avec customX et customY différents.

Répondre

1

Trouvé!

Had ajouter cette ligne à la fin:

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

Pouvez-vous justifier? Comme je l'ai écrit je ne peux pas déduire si c'est quelque chose qui arrive à travailler, par coïncidence, ou une vraie solution. – IInspectable

Questions connexes