Bonjour,
Après plus d'une journée à essayer de comprendre pourquoi en appuyant sur entrée alors que j'écrivais dans une zone de texte un bouton était cliqué, j'ai compris que les QDialog activent par défaut le QPushButton::setAutoDefault(true) pour chaque boutons qui sont dessiné à l'intérieur (super intuitif).
Le problème est que je ne suis pas le seul à travailler sur ce code (et l'année prochaine, une nouvelle équipe travaillera dessus) donc la solution consistant à mettre des QPushButton::setAutoDefault(false) à chaque bouton n'est pas viable.
On pourrait certes remplacer la QDialog par une QFrame, QWidget ou QMainWindow mais nous pensons que ce serait bien de pouvoir "cliquer" sur un bouton bien particulier en appuyant sur entrée.
J'ai donc X boutons dans ma QDialog, Y autres boutons potentiels qui pourront être rajouté par de futures équipes et un unique bouton de validation qui sera cliqué lorsqu'on appuiera sur entré.
Malheureusement, je ne trouve pas comment désactiver le QPushButton::setAutoDefault(true) par défaut sur les boutons dans un QDialog ni même comment "accepter" les appuis de la touche "entrée" comme cliquant un bouton ayant le QPushButton::setAutoDefault(true) dans un QFrame, QWidget ou QMainWindow.
Ce qui m'étonne vraiment...
Sinon je pourrais certes récupérer les événements clavier mais je préférerais si possible éviter de devoir créer une classe juste pour cela.
Partager