Obtenir le "nom" d'une clé de QKeyEvent dans Qt
Est-il un moyen facile d'obtenir le nom d'une clé (donc quelque chose comme "flèche haut" à partir d'une clé de l'événement au lieu de simplement obtenir le code de la clé "16777235")? Dois-je faire une liste de noms de clé de moi-même?
source d'informationauteur Ben
Vous devez vous connecter pour publier un commentaire.
À l'aide de noms lisibles dans votre code
Vous pouvez utiliser le Qt::Key enum, ou d'obtenir la clé, comme une chaîne de caractères avec QKeyEvent::text().
De QKeyEvent documentation:
Qt::Key est un enum que les cartes numériques Id de clé (comme la valeur de retour de QKeyEvent::key()) pour programmeur-lisible des noms comme
Qt::Key_Up
.Si vous ne se soucient touches alphanumériques, vous pouvez également utiliser QKeyEvent::text() pour obtenir la valeur:
L'affichage des noms lisibles pour l'utilisateur
Utilisation QKeySequence::toString() ou de construire votre propre table de "beaux" noms.
La façon la plus simple pour obtenir lisible par l'homme clé de noms à montrer à l'utilisateur est d'utiliser QKeySequence::toString().
Voici un exemple:
Si vous n'aimez pas les noms que QKeySequence utilisations (par exemple, vous voulez utiliser "Flèche Haut" au lieu de "Haut"), vous aurez besoin pour faire de votre table de données pour appliquer les valeurs enum à vos noms préférés.
Une autre approche utilise l'intervalle Qt metaobject système et l'introspection dans la plupart des énumérations dans l'intervalle Qt de l'espace de noms. Cela fonctionne dans les deux Qt 4 et Qt 5.
Vous pouvez l'utiliser, par exemple,
keyPressEvent
comme suit: