QGraphicsScene de Qt offre de belles fonctionnalités en sortie de boîte: l'utilisateur peut sélectionner des objets et les déplacer.Comment obtenir des événements de déplacement d'élément de rapport QGraphicsScene
Je veux une chose de plus - recevoir des notifications lorsque l'utilisateur a fini de déplacer l'objet. Il y a des événements de niveau inférieur, comme le déplacement de la souris, appuyez sur, relâchez, mais je ne voudrais pas réimplémenter la fonctionnalité qui est déjà là (en déplaçant les objets).
La méthode http://doc.trolltech.com/4.2/qgraphicsitem.html#itemChange ressemble à cela, mais elle n'est pas appelée lorsque l'utilisateur déplace l'objet.
J'utilise Qt 4.6
Il s'avère que vous devez définir un indicateur pour activer cet événement: item-> setFlag (QGraphicsItem :: ItemSendsGeometryChanges, true);
Mais maintenant l'événement est déclenché chaque fois que l'élément corrige le changement. Je veux avoir un événement seulement quand le changement est fait par l'utilisateur.
C'est ce que je fais en ce moment et ça marche un peu, mais je mets à jour les objets par programme et il en résulte que sur chaque release de souris TOUS les objets sont considérés comme déplacés même s'il n'y a aucun mouvement réel. – Viesturs
Où écrivez-vous cette fonction sur votre classe vue/scène ou dans votre classe d'objet? – Drewen
Cette fonction appartient à ma classe d'objets. Le cas non trivial est qu'il peut y avoir plusieurs objets sélectionnés qui sont déplacés, donc je teste tous les éléments à déplacer. Je suppose que l'utilisation de QGraphicsScene :: selectedItems() donnerait le bon résultat. – Viesturs