Je crée un graphe de noeud et je veux être capable de cliquer sur l'espace vide d'une scène et de faire un déplacement du milieu de la souris pour naviguer sans désélectionner les éléments actuellement sélectionnés dans la scène. Aucune suggestion?Comment empêcher un clic de souris du milieu de désélectionner des éléments dans un QGraphicsScene sans le bloquer à partir d'éléments de la scène?
Je peux bloquer le clic du milieu dans mousePressEvent de la vue et obtenir le bon comportement, mais je n'ai plus d'événements de clic de souris sur les éléments de la scène. Cela ne me dérange pas un clic du milieu résultant en une sélection unique en cliquant sur un élément de la scène, mais si je clique sur le milieu de l'espace vide dans la scène, je ne veux pas que la sélection soit modifiée.
Cela ne couvre pas le comportement plus complexe que je cherche: PyQt. How to block clear selection on mouse right click?
Je ne l'ai pas essayer d'utiliser un eventFilter que je suppose que la question serait la même
J'utilise PyQt/PySide , FWIW. Avant de lancer ma propre solution de contournement, j'ai pensé que je posterais ici pour la bonne façon ou au moins d'autres solutions de contournement.
Quelques idées de contournement:
- Bloquer l'mousePressEvent à la scène, mais itérer sur les éléments enfants pour livrer directement
- Restaurer la sélection tout en restant dans la mousePressEvent dans la scène. Probablement mauvais pour la performance à l'échelle mais simple je suppose.
Tout commentaire serait génial!
[Éditer:] Voici ma version python de la réponse. Code testé. Dans ma classe dérivée QGraphicsScene:
def mousePressEvent(self, event):
# Prevent the QGraphicsScene default behavior to deselect-all when clicking on
# empty space by blocking the event in this circumstance.
item_under_the_mouse = self.itemAt(event.scenePos())
if event.button() == QtCore.Qt.MidButton and not item_under_the_mouse:
event.accept()
else:
super(GraphScene, self).mousePressEvent(event)
C'est la direction que je prenais. Content de voir confirmation. Je posterai la version python une fois que je l'aurai fonctionné. – Rafe
Excellent ... Je ne connais pas Python, mais je l'ai trouvé assez facile de convertir en va-et-vient dans les réponses. – goug