J'ai un QGraphicsItem que l'utilisateur peut faire glisser. Je veux garder l'élément dans le quadrant supérieur droit de ma scène, donc je l'emporterait sur mouseMoveEvent comme ceci:Preeventing QGraphicsItem's itemChangement
def mouseMoveEvent(self, event):
if self.x() < 0:
self.setPos(0, self.y())
if self.y() + self.rect().height() > 0:
self.setPos(self.x(), -self.rect().height())
fonctionne comme un charme, si tout va bien.
Maintenant, j'utilise itemChanged pour lancer les calculs lorsque l'élément se déplace. Bien que mon objet soit resté immobile quand il a atteint ma limite définie, itemChanged est appelé aussi quand ma souris est dans la 'zone interdite', ce qui est compréhensible. Je voudrais bloquer ce comportement en fonction des vérifications ci-dessus. Puisque QGraphicsItem n'est pas un QObject, blockSignals ne fonctionne pas ici. Une idée de comment je peux y parvenir?
Ne pas effectuer la vérification avant d'émettre l'événement, mais dans la fonction de réception avant de traiter quoi que ce soit – SteakOverflow