J'ai un widget (QTabeleWidget, QLabels et quelques QButtons). Il a été construit dans Qt-Designer. Et maintenant je dois mettre en place certaines choses. Pour cela j'ai besoin du mousePressEvent. En général, j'écrirait une sous-classe et d'écrire quelque chose comme ceci:Comment implémenter MousePressEvent pour un widget Qt-Designer dans PyQt
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
print "left"
else:
print 'right'
Mais je ne sais pas comment faire pour un widget créé dans le concepteur. J'en ai besoin pour le QTabeleWidget. J'espère que quelqu'un peut m'aider. J'ai essayé de résoudre le problème avec l'aide de google, mais sans succès. Ce site m'a aidé plusieurs fois, alors j'ai pensé que je vais essayer.
Merci pour la réponse. J'ai essayé, mais ça ne marche pas. Si je clique sur la fenêtre, pas un widget, alors il se déclenche. Le mousePressEvent fonctionne. Mais si je clique sur le QTableWidget ou un QLabel, le mousePressEvent n'est pas exécuté. Par exemple, si je veux le signal itemSelectionChanged du QTableWidget, j'écris: "def on_myTable_itemSelectionChanged (self):" Donc je cherche quelque chose d'équivalent pour le mousePressEvent. Espérons que mon explication n'est pas mauvaise. – user427305
Le câblage automatique existe pour les signaux mais pas pour les événements. Lorsque vous sous-classez et implémentez 'mousePressEvent', vous recevrez des événements pour les widgets donnés, mais uniquement pour les événements où l'enfant n'accepte pas l'événement. Puisque vous avez des widgets dans le widget, chacun d'entre eux reçoit et traite l'événement avant que le parent ne le voit. Une bonne façon de traiter cela quand aucun signal pertinent n'est présent est d'installer un filtre d'événement en utilisant 'installEventFilter'. –
Merci! Cela fonctionne avec installEventFilter. C'est ce que je cherchais. – user427305