QInputMethodEvent Class
La classe QInputMethodEvent fournit des paramètres pour les événements relatifs aux méthodes d'entrée. Plus d'informations...
| En-tête : | #include <QInputMethodEvent> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Héritages : | QEvent |
- Liste de tous les membres, y compris les membres hérités
- QInputMethodEvent fait partie des classes d'événements.
Types publics
| class | Attribute |
| enum | AttributeType { TextFormat, Cursor, Language, Ruby, Selection, MimeData } |
Fonctions publiques
| QInputMethodEvent() | |
| QInputMethodEvent(const QString &preeditText, const QList<QInputMethodEvent::Attribute> &attributes) | |
| const QList<QInputMethodEvent::Attribute> & | attributes() const |
| const QString & | commitString() const |
| const QString & | preeditString() const |
| int | replacementLength() const |
| int | replacementStart() const |
| void | setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0) |
Description détaillée
Les événements relatifs aux méthodes de saisie sont envoyés aux widgets lorsqu'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 les langues dont l'alphabet n'est pas latin.
Lors de la création de widgets d'édition de texte personnalisés, l'attribut de fenêtre Qt::WA_InputMethodEnabled doit être défini explicitement (à l'aide de la fonction QWidget::setAttribute()) afin de recevoir les événements liés aux méthodes de saisie.
Ces événements intéressent les auteurs de gadgets de saisie au clavier qui souhaitent pouvoir gérer correctement les langues dont la saisie de caractères est complexe. La saisie de texte dans ces langues se fait généralement en trois étapes :
- Commencer à composer
Lorsque l'utilisateur appuie sur la première touche d'un clavier, un contexte de saisie est créé. Ce contexte de saisie contiendra une chaîne de caractères tapés.
- Composer
À chaque fois que l'utilisateur appuie sur une nouvelle touche, la méthode de saisie tente de créer une chaîne de caractères correspondant au texte tapé jusqu'à présent, appelée chaîne de pré-modification. Tant que le contexte de saisie est actif, l'utilisateur ne peut déplacer le curseur qu'à l'intérieur de la chaîne de caractères appartenant à ce contexte de saisie.
- Terminer
À un moment donné, l'utilisateur activera un composant de l'interface utilisateur (peut-être en utilisant une touche particulière) où il pourra choisir parmi un certain nombre de chaînes de caractères correspondant au texte qu'il a tapé jusqu'à présent. L'utilisateur peut soit confirmer son choix, soit annuler la saisie ; dans les deux cas, le contexte de saisie est fermé.
QInputMethodEvent modélise ces trois étapes et transfère les informations nécessaires au rendu correct du résultat intermédiaire. Un QInputMethodEvent a deux paramètres principaux : preeditString() et commitString(). Le paramètre preeditString() indique la chaîne de pré-édition actuellement active. Le paramètre commitString() indique un texte qui doit être ajouté au texte du widget de l'éditeur (ou en remplacer des parties). Il s'agit généralement d'un résultat des opérations de saisie et il doit être inséré dans le texte du widget directement avant la chaîne preedit.
Si commitString() doit remplacer des parties du texte de l'éditeur, replacementLength() contiendra le nombre de caractères à remplacer. replacementStart() contient la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne de prédiction.
Un certain nombre d'attributs contrôlent l'aspect visuel de la chaîne de pré-édition (l'aspect visuel du texte en dehors de la chaîne de pré-édition n'est contrôlé que par le widget). L'énumération AttributeType décrit les différents attributs qui peuvent être définis.
Une classe implémentant QWidget::inputMethodEvent() ou QGraphicsItem::inputMethodEvent() doit au moins comprendre et respecter les attributs TextFormat et Cursor.
Étant donné que les méthodes de saisie doivent pouvoir interroger certaines propriétés du widget ou de l'élément graphique, les sous-classes doivent également implémenter QWidget::inputMethodQuery() et QGraphicsItem::inputMethodQuery(), respectivement.
Lorsqu'il reçoit un événement de méthode d'entrée, le widget de texte doit effectuer les étapes suivantes :
- Si le widget a sélectionné du texte, le texte sélectionné doit être supprimé.
- Supprimer le texte commençant à replacementStart() avec la longueur replacementLength() et le remplacer par commitString(). Si replacementLength() est égal à 0, replacementStart() donne la position d'insertion de commitString().
Lors du remplacement, la zone de la chaîne preedit est ignorée, ainsi un remplacement commençant à -1 avec une longueur de 2 enlèvera le dernier caractère avant la chaîne preedit et le premier caractère après, et insérera la chaîne commit directement avant la chaîne preedit.
Si le widget implémente undo/redo, cette opération est ajoutée à la pile undo.
- S'il n'y a pas de chaîne preedit actuelle, insérer le preeditString() à la position actuelle du curseur ; sinon, remplacer le preeditString précédent par celui reçu de cet événement.
Si le widget implémente undo/redo, le preeditString() ne devrait pas influencer la pile undo/redo de quelque manière que ce soit.
Le widget doit examiner la liste des attributs à appliquer à la chaîne de pré-édition. Il doit comprendre au moins les attributs TextFormat et Cursor et les rendre comme spécifié.
Voir également QInputMethod.
Documentation sur les types de membres
enum QInputMethodEvent::AttributeType
| Constante | Valeur | Description |
|---|---|---|
QInputMethodEvent::TextFormat | 0 | QTextCharFormat pour la partie de la chaîne de preedit spécifiée par le début et la longueur. value contient un QVariant de type QTextFormat spécifiant le rendu de cette partie de la chaîne de preedit. Il doit y avoir au plus un format pour chaque partie de la chaîne de préécriture. Si plusieurs sont spécifiés pour un caractère de la chaîne, le comportement est indéfini. Une implémentation conforme doit au moins respecter les propriétés backgroundColor, textColor et fontUnderline du format. |
QInputMethodEvent::Cursor | 1 | S'il est activé, un curseur doit être affiché à l'intérieur de la chaîne de pré-édition à la position de départ. La variable length détermine si le curseur est visible ou non. Si la longueur est égale à 0, le curseur est invisible. Si la valeur est QVariant de type QColor, cette couleur sera utilisée pour le rendu du curseur, sinon la couleur du texte environnant sera utilisée. Il ne doit y avoir qu'un seul attribut Cursor par événement. Si plusieurs attributs sont spécifiés, le comportement est indéfini. |
QInputMethodEvent::Language | 2 | La variante contient un objet QLocale spécifiant la langue d'une certaine partie de la chaîne de pré-édition. Il doit y avoir au maximum un jeu de langues pour chaque partie de la chaîne de pré-édition. Si plusieurs langues sont spécifiées pour un caractère de la chaîne, le comportement est indéfini. |
QInputMethodEvent::Ruby | 3 | Le texte en rubis pour une partie de la chaîne de preedit. Il doit y avoir au plus un jeu de texte ruby pour chaque partie de la chaîne de preedit. Si plusieurs sont spécifiés pour n'importe quel caractère de la chaîne, le comportement est indéfini. |
QInputMethodEvent::Selection | 4 | S'il est défini, le curseur d'édition doit être déplacé à la position spécifiée dans le contenu du texte de l'éditeur. Contrairement à Cursor, cet attribut ne fonctionne pas sur le texte de préédition, mais sur le texte environnant. Le curseur sera déplacé une fois que la chaîne de validation aura été validée, et la chaîne de validation sera située à la nouvelle position d'édition. La position de départ spécifie la nouvelle position et la variable de longueur peut être utilisée pour définir une sélection à partir de ce point. La valeur n'est pas utilisée. |
QInputMethodEvent::MimeData | 5 | Si elle est définie, la variante contient un objet QMimeData représentant le texte validé. L'objet commitString() fournit toujours la représentation en texte brut du texte validé. |
Voir également Attribute.
Documentation des fonctions membres
QInputMethodEvent::QInputMethodEvent()
Construit un événement de type QEvent::InputMethod. Les éléments attributes(), preeditString(), commitString(), replacementStart() et replacementLength() sont initialisés aux valeurs par défaut.
Voir aussi setCommitString().
QInputMethodEvent::QInputMethodEvent(const QString &preeditText, const QList<QInputMethodEvent::Attribute> &attributes)
Construit un événement de type QEvent::InputMethod. Le texte de prérédaction est défini à preeditText, les attributs à attributes.
Les valeurs commitString(), replacementStart() et replacementLength() peuvent être définies à l'aide de setCommitString().
Voir également preeditString() et attributes().
const QList<QInputMethodEvent::Attribute> &QInputMethodEvent::attributes() const
Renvoie la liste des attributs transmis 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 uniquement).
Voir aussi preeditString() et Attribute.
const QString &QInputMethodEvent::commitString() const
Renvoie le texte qui doit être ajouté au texte du widget de l'éditeur (ou en remplacer des parties). Il s'agit généralement d'un résultat des opérations de saisie et il doit être inséré dans le texte du widget directement avant la chaîne preedit.
Voir aussi setCommitString(), preeditString(), replacementStart(), et replacementLength().
const QString &QInputMethodEvent::preeditString() const
Renvoie le texte pré-édité, c'est-à-dire le texte avant que l'utilisateur ne commence à le modifier.
Voir aussi commitString() et attributes().
int QInputMethodEvent::replacementLength() const
Renvoie le nombre de caractères à remplacer dans la chaîne preedit.
Voir aussi replacementStart() et setCommitString().
int QInputMethodEvent::replacementStart() const
Renvoie la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne preedit.
Voir aussi replacementLength() et setCommitString().
void QInputMethodEvent::setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0)
Définit la chaîne de validation à commitString.
La chaîne de validation est le texte qui doit être ajouté au texte du widget de l'éditeur (ou en remplacer des parties). Il résulte généralement des opérations de saisie et doit être inséré dans le texte du widget directement avant la chaîne preedit.
Si la chaîne de validation doit remplacer des parties du texte de l'éditeur, replaceLength indique le nombre de caractères à remplacer. replaceFrom indique la position à laquelle les caractères doivent être remplacés par rapport au début de la chaîne de validation.
Voir également commitString(), replacementStart() et replacementLength().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.