IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Viadeo Twitter Facebook Share on Google+   
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 !

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 © 2024 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 !