Question

Je développe une application Qt sur Red Hat Linux. Je veux capturer Retour chariot événements clés de la presse dans un QComboBox.

J'ai connecté une fente au signal editTextChanged() qui est émis pour chaque pression de touche, mais pas pour la touche Entrée .
Pourquoi donc? Est-il une autre façon de détecter retours chariot

Était-ce utile?

La solution

Je suppose que vous avez écrit une fente et connecté à QComboBox::editTextChanged() signaux.
Ce signal est déclenché lorsque le texte change et Entrée ne change pas le texte, il l'accepte. Si vous voulez capturer retour chariot , il y a un certain nombre de façons dont vous pouvez suivre.

  1. QComboBox sous-classe.
    Remplacer keyPressEvent(): premier QComboBox::keyPressEvent() d'appel, puis vérifier si la touche pressée est Entrée . Le cas échéant, émettre un signal.
    Utilisez cette sous-classe chaque fois que vous avez besoin. Recherche sur la promotion de widgets dans QDesigner si vous ne savez pas comment.

  2. Mettre en œuvre une nouvelle classe qui hérite QObject. Dans cette classe, passer outre eventFilter(): vérifier si l'événement est une touche. Le cas échéant, vérifier si elle est Entrée clé. Le cas échéant, émettre un signal.
    Ensuite, créez une instance de cette classe et le définir comme filtre d'événement à votre QComboBox. Connectez une fente au signal de cette instance, qui vous mis en œuvre.

Si ceux-ci ne sont pas claires, je recommande la lecture des pages suivantes:

utilisant Widgets personnalisés avec le designer Qt

Qt Events & Filtres événement

Autres conseils

Vous pouvez aussi regarder dans le signal de activated( const QString& ). Il peut être émis lorsque l'utilisateur clique entrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top