Comment faire un QPushButton pressées pour entrer la clé?
Je veux faire de mon application portable convivial. Je peux onglet de partout, mais si je l'onglet à un QPushButton je ne peux pas appuyer sur Entrée, seulement avec espace.
Quel est le problème? Comment faire pressées pour Entrée?
Vous devez vous connecter pour publier un commentaire.
tl;dr
QPushButton
.autoDefault
oudefault
.La plupart des cas, la principale différence entre
autoDefault
etdefault
est de savoir comment le bouton sera rendue. Mais il y a des cas où il peut causer des choses inattendues donc, pour plus d'informations, lisez la suite ci-dessous.Examen complet
Aperçu
Chaque
QPushButton
a 3 propriétés qui ne sont pas héritées. À partir de ces deux (default
etautoDefault
) ont un rôle majeur lors de boutons surQDialog
s, car ces paramètres (et l'accent mis sur l'un des boutons) qui décide du bouton sera pressé, si l'on touche Entrée.Toutes ces propriétés sont définies false par défaut. Seule exception est
autoDefault
qui sera vrai si le bouton a unQDialog
parent.Chaque fois que vous appuyez sur la touche espace le bouton avec l'accent mis sur il sera pressé. Les points suivants décrivent ce qui se passe si vous appuyez sur la touche Entrée.
Par défaut de la propriété
Si cette option est définie à true, le bouton sera un bouton par défaut.
Si Entrée est enfoncée dans la boîte de dialogue, que ce bouton sera pressé, sauf lorsque le focus est sur un autoDefault bouton.
Il devrait y avoir un seul bouton par défaut. Si vous ajoutez plus de la dernière ajoutée sera le bouton par défaut.
AutoDefault propriété
Si cette option est définie à true, le bouton sera un autoDefault bouton.
Si Entrée est enfoncée dans la boîte de dialogue, que ce bouton sera pressé si l'accent est mis sur elle.
Si le focus n'est pas sur un autoDefault bouton et il n'y a pas de bouton par défaut de la prochaine autoDefault bouton sera pressé pour Entrée.
Plat propriété
Si cela est vrai, alors la frontière avec le bouton ne sera pas augmenté.
Exemple des tables de
Les tableaux suivants montrent le bouton sera pressé avec boutons différents sur différentes cibles. Les boutons sont ajoutés à partir de la gauche vers la droite.
Code de Test
Le code suivant est un moyen d'ajouter des boutons à une boîte de dialogue. Il peut être utilisé pour le test en changeant le
boolean
valeurs àsetDefault()
et/ousetAutoDefault()
.Vous avez juste besoin de créer une fenêtre, ajouter un
QPushButton
appelépushButton
et unQLabel
appelélabel
(qui est le nom par défaut). N'oubliez pas de#include <QMessageBox>
. Ensuite, copiez ce code dans le bouton declicked()
signal:Affichage
Si vous compilez le code, vous pouvez obtenir cette fenêtre. Vous n'avez même pas à cliquer sur les boutons à cause de la façon dont ils sont rendus par le système d'exploitation affiche qui sera pressé si vous appuyez sur Entrée ou espace.
Documentation officielle
Plus de cette réponse a été faite selon la documentation officielle.
Le QPushButton documentation faite par Qt membres de ces:
Il est également intéressant de vérifier QDialog et QMessageBox.
En fonction de l'intervalle Qt de documentation de l'Entrée devrait travailler
http://qt-project.org/doc/qt-4.8/qpushbutton.html
totymedli la réponse est grande. J'ai ajouté un petit programme pour tester les différentes combinaisons de isDefault, autoDefault, setDefault et setAutoDefault fonctions.
Définir l'ordre de tabulation pour vos widgets. Cela va permettre l'utilisation de la touche retour pour cliquant. Ses dans il par défaut à l'intérieur de l'intervalle Qt.