Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QInputMethodEvent

La classe QInputMethodEvent fournit les paramètres pour les événements de méthode de saisie. Plus d'informations...

#include <QInputMethodEvent>

Voir la position dans l'arbre des classes.

  

Héritage

Hérite de QEvent.

Description détaillée

La classe QInputMethodEvent fournit les paramètres pour les événements de méthode de saisie.

Les événements de méthode de saisie sont envoyés aux widgets quand une méthode de saisie est utilisée pour entrer du texte dans un widget. Les méthodes de saisie sont largement utilisées pour saisir du texte dans une langue avec des caractères non-latin.

Notez que lors de la création de widgets personnalisés d'édition de texte, l'attribut de fenêtre Qt::WA_InputMethodEnabled doit être défini de façon explicite (en utilisant la fonction QWidget::setAttribute()), de manière à recevoir les événements de méthode de saisie.

Les événements sont intéressants pour les auteurs de widgets de saisie clavier qui veulent être en mesure de gérer correctement les langages avec la saisie de caractères complexes.

  1. Début de la saisie

Quand l'utilisateur appuie sur la première touche sur un clavier, un contexte de saisie est créé. Ce contexte de saisie contiendra une chaîne des caractères tapés.

  1. Saisie

Avec chaque nouvelle touche pressée, la méthode de saisie tentera de créer une chaîne correspondante pour le texte tapé jusque-là appelé chaîne de préédition. Tant que le contexte est activé, l'utilisateur peut seulement déplacer le curseur à l'intérieur de la chaîne appartenant à ce contexte de saisie.

  1. Complétion

À un certain moment, l'utilisateur activera un composant de l'interface utilisateur (peut-être en utilisant une touche particulière) où il peut choisir parmi un nombre de chaînes correspondant au texte qu'il a entré jusqu'à maintenant. L'utilisateur peut soit confirmer son choix, soit l'annuler ; dans tous les cas, le contexte de saisie sera fermé.

QInputMethodEvent modélise ces trois étapes et transfère l'information nécessaire pour afficher correctement le résultat intermédiaire. QInputMethodEvent possède deux paramètres principaux : preeditString() etcommitString(). Le paramètre preeditString() fournit la chaîne de préédition actuellement active. Le paramètre commitString() fournit un texte qui devrait être ajouté au (ou remplacer des parties du) texte du widget d'édition. Il est habituellement un résultat des opérations d'entrée et doit être inséré dans le texte des widgets directement avant la chaîne de préédition.

Si commitString() doit remplacer des parties du texte dans l'éditeur, replacementLength() contiendra le nombre de caractères qui seront remplacés. replacementStart() contient la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne de préédition.

Certains attributs contrôlent l'apparence visuelle de la chaîne de préédition (l'apparence visuelle du texte en dehors de la chaîne de préédition est contrôlée par le widget même). L'énumération AttributeType décrit les différents attributs qui peuvent être activés.

Une classe implémentant QWidget::inputMethodEvent() ou QGraphicsItem::inputMethodEvent() devrait au moins savoir interpréter et honorer les attributs TextFormat et Cursor.

Depuis que les méthodes de saisie ont besoin de pouvoir demander certaines propriétés au widget ou à l'item graphique, les sous-classes doivent également implémenter QWidget::inputMethodQuery() et QGraphicsItem::inputMethodQuery(), respectivement.

À la réception d'un événement de méthode de saisie, le widget du texte doit effectuer les étapes suivantes :

  1. Si le widget a sélectionné le texte, le texte sélectionné doit être supprimé ;
  2. Supprimer le texte commençant à replacementStart() avec une longueur de replacementLength() et le remplacer par le commitString(). Si replacementLength() vaut 0, replacementStart() fournit la position de l'insertion pour le commitString().

Lorsque le remplacement fait que la zone de la chaîne de préédition est ignorée, c'est-à-dire un remplacement commençant à -1 avec une longueur de 2, il supprimera le dernier caractère avant la chaîne de préédition et le premier caractère juste après et insèrera la chaîne mémorisée directement avant la chaîne de préédition.

Si le widget implémente annuler/refaire, cette opération est ajoutée à la pile d'annulation.

  1. S'l n'y a pas de chaîne de préédition courante, insérer le preeditString() à la position courante du curseur ; autrement remplacer la chaîne de préédition précédente avec celle reçue depuis l'événement.

Si le widget implémente annluer/refaire, le preeditString() ne devrait en aucune façon influencer la pile de annuler/refaire.

Le widget devrait examiner la liste des attributs à appliquer sur la chaîne de préédition. Il doit pouvoir interpréter au minimum les attributs TextFormat et Cursor en les affichant comme spécifié.

Voir aussi QInputContext.

Type

enum QInputMethodEvent::AttributeType

Constante Valeur Description
QInputMethodEvent::TextFormat   Un QTextCharFormat pour la partie de la chaîne de préédition spécifié par start et length. value contient un QVariant de type QTextFormat spécifiant le rendu de cette partie de la chaîne de préédition. Il devrait y avoir au plus un format pour chaque partie de la chaîne de préédition. Si plusieurs sont spécifiées pour n'importe quel caractère alors le comportement est indéfini. Une implémentation conforme doit au moins honorer les propriétés du format backgroundColor, textColor et fontUnderline.
QInputMethodEvent::Cursor 1 Si activé, un curseur doit être affiché à l'intérieur de la chaîne de préédition à son début. La variable length détermine si le curseur est visible ou non. Si la longueur vaut 0 le curseur est invisible. Si la valeur est un QVariant de type QColor cette couleur sera utilisée pour le rendu du curseur, autrement la couleur du texte autour sera utilisée. Il devrait y avoir au plus un attribut Cursor par événement. Si plusieurs sont spécifiés alors le comportement est indéfini.
QInputMethodEvent::Language 2 Le variant contient un objet QLocale spécifiant la langue de certaines parties de la chaîne de préédition. Il devrait y avoir au plus une langue spécifiée pour chaque partie de la chaîne de préédition. Si plusieurs sont spécifiées pour n'importe quel caractère alors le comportement est indéfini.
QInputMethodEvent::Ruby 3 Le texte ruby pour une partie de la chaîne de préédition. Il devrait y avoir au plus un texte ruby de fixé pour chaque partie de la chaîne de préédition. Si plusieurs sont spécifiés pour n'importe quel caractère alors le comportement est indéfini.
QInputMethodEvent::Selection 4 Si activé, le curseur d'édition doit être déplacé dans le contenu de l'éditeur de texte à la position spécifiée. En contraste avec Cursor, cet attribut ne fonctionne pas sur le texte de préédition mais sur le texte l'encadrant. Le curseur sera déplacé après que la chaîne mémorisée soit validée et la chaîne de préédition sera positionnée à la nouvelle position d'édition. La position start spécifie la nouvelle position et la variable length peut être utilisée pour activer un début de sélection depuis ce point. La valeur est inutilisée.

Voir aussi Attribute.

Fonctions membres

QInputMethodEvent::QInputMethodEvent ()

Construit un événement de type QEvent::InputMethod. attributes(), preeditString(), commitString(), replacementStart() et replacementLength() sont initialisés aux valeurs par défaut.

Voir aussi setCommitString().

QInputMethodEvent::QInputMethodEvent ( const QString & preeditText, const QList<Attribute> & attributes )

Construit un événement de type QEvent::InputMethod. Le texte de préédition est défini à preeditText, les attributs à attributes.

Les valeurs commitString(), replacementStart() et replacementLength() peuvent être fixées en utilisant setCommitString().

Voir aussi preeditString() et attributes().

QInputMethodEvent::QInputMethodEvent ( const QInputMethodEvent & other )

Construit une copie de other.

const QList<Attribute> & QInputMethodEvent::attributes () const

Retourne la list des attributs passés au constructeur de QInputMethodEvent. Les attributs contrôlent l'apparence visuelle de la chaîne de préédition (l'apparence visuelle du texte en dehors de la chaîne de préédition est contrôlée par le widget même).

Voir aussi preeditString() et Attribute.

const QString & QInputMethodEvent::commitString () const

Retourne le texte qui devrait être ajouté au (ou remplacer une partie du) texte du widget éditeur. Il est généralement le résultat des opérations d'entrée et doit être inséré dans le texte du widget juste avant la chaîne de préédition.

Voir aussi setCommitString(), preeditString(), replacementStart() et replacementLength().

const QString & QInputMethodEvent::preeditString () const

Retourne le texte de préédition, c'est-à-dire le texte avant que l'utilisateur n'ait commencé à l'éditer.

Voir aussi commitString() et attributes().

int QInputMethodEvent::replacementLength () const

Retourne le nombre de caractères à remplacer dans la chaîne de préédition.

Voir aussi replacementStart() et setCommitString().

int QInputMethodEvent::replacementStart () const

Retourne la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne de préédition.

Voir aussi replacementLength() et setCommitString().

void QInputMethodEvent::setCommitString ( const QString & commitString, int replaceFrom = 0, int replaceLength = 0 )

Définit la chaîne mémorisée à commitString.

La chaîne mémorisée est le texte qui devrait être ajouté au (ou remplacer des parties du) texte du widget éditeur. Elle est généralement le résultat des opérations d'entrée et doit être insérée dans le texte du widget juste avant la chaîne de préédition.

Si la chaîne mémorisée doit remplacer une partie du texte dans l'éditeur, replaceLength spécifie le nombre de caractères à remplacer. replaceFrom spécifie la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne de préédition.

Voir aussi commitString(), replacementStart() et replacementLength().

Remerciements

Merci à Dimitry Ernot pour la traduction et à Jonathan Courtois ainsi qu'à Jacques Thery pour leur relecture !

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 73
  2. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  3. Une nouvelle ère d'IHM 3D pour les automobiles, un concept proposé par Digia et implémenté avec Qt 3
  4. Qt Creator 2.5 est sorti en beta, l'EDI supporte maintenant plus de fonctionnalités de C++11 2
  5. Vingt sociétés montrent leurs décodeurs basés sur Qt au IPTV World Forum, en en exploitant diverses facettes (déclaratif, Web, widgets) 0
  6. PySide devient un add-on Qt et rejoint le Qt Project et le modèle d'open gouvernance 1
  7. Thread travailleur avec Qt en utilisant les signaux et les slots, un article de Christophe Dumez traduit par Thibaut Cuvelier 1
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 102
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 53
  3. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 73
  4. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  5. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 11
Page suivante
  1. Linus Torvalds : le "C++ est un langage horrible", en justifiant le choix du C pour le système de gestion de version Git 100
  2. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 229
  3. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  4. Apple cède et s'engage à payer des droits à Nokia, le conflit des brevets entre les deux firmes s'achève 158
  5. Nokia porte à nouveau plainte contre Apple pour violation de sept nouveaux brevets 158
  6. Quel est le code dont vous êtes le plus fier ? Pourquoi l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ? 83
  7. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 101
Page suivante

Le blog Digia au hasard

Logo

Créer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut Cuvelier

Le blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web