QInputMethodEvent Class
La classe `QInputMethodEvent` fournit des paramètres pour les événements liés aux méthodes de saisie. En savoir plus...
| En-tête : | #include <QInputMethodEvent> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite de : | 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) |
Fonctions protégées
| QInputMethodEvent(QInputMethodEvent &&) | |
| QInputMethodEvent & | operator=(QInputMethodEvent &&) |
| QInputMethodEvent & | operator=(const QInputMethodEvent &other) |
Description détaillée
Les événements de méthode de saisie sont envoyés aux widgets lorsqu'une méthode de saisie est utilisée pour saisir du texte dans un widget. Les méthodes de saisie sont largement utilisées pour saisir du texte dans les langues utilisant des alphabets non latins.
Notez que 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 développeurs de widgets 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 déroule généralement en trois étapes :
- Début de la saisie
Lorsque l’utilisateur appuie sur la première touche du clavier, un contexte de saisie est créé. Ce contexte de saisie contiendra une chaîne de caractères correspondant aux caractères saisis.
- Composition
À chaque nouvelle touche enfoncée, la méthode de saisie tente de créer une chaîne correspondant au texte saisi jusqu’à présent, appelée « chaîne de pré-édition ». Tant que le contexte de saisie est actif, l’utilisateur ne peut déplacer le curseur qu’à l’intérieur de la chaîne appartenant à ce contexte de saisie.
- Finalisation
À un moment donné, l’utilisateur activera un composant de l’interface utilisateur (éventuellement à l’aide d’une touche spécifique) dans lequel il pourra choisir parmi plusieurs chaînes correspondant au texte saisi jusqu’à présent. L’utilisateur peut soit confirmer son choix, soit annuler la saisie ; dans les deux cas, le contexte de saisie sera fermé.
QInputMethodEvent modélise ces trois étapes et transmet les informations nécessaires pour afficher correctement le résultat intermédiaire. Un objet QInputMethodEvent possède deux paramètres principaux : preeditString() et commitString(). Le paramètre preeditString() fournit la chaîne de pré-édition actuellement active. Le paramètre commitString() fournit un texte qui doit être ajouté au texte du widget d’édition (ou en remplacer certaines parties). Il s’agit généralement du résultat des opérations de saisie et doit être inséré dans le texte du widget immédiatement avant la chaîne de pré-édition.
Si la fonction ` commitString()` doit remplacer des parties du texte dans l'éditeur, la fonction ` replacementLength()` contiendra le nombre de caractères à remplacer. La fonction ` replacementStart()` contient la position à partir du début de la chaîne de pré-édition à laquelle les caractères doivent être remplacés.
Plusieurs 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 uniquement par le widget). L’énumération ` AttributeType ` décrit les différents attributs pouvant être définis.
Une classe implémentant les méthodes QWidget::inputMethodEvent() ou QGraphicsItem::inputMethodEvent() doit au minimum 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 respectivement les méthodes QWidget::inputMethodQuery() et QGraphicsItem::inputMethodQuery().
Lorsqu’il reçoit un événement de méthode de saisie, le widget de texte doit effectuer les étapes suivantes :
- Si le widget contient du texte sélectionné, celui-ci doit être supprimé.
- Supprimer le texte commençant à l’index replacementStart() et ayant une longueur de replacementLength(), puis le remplacer par la chaîne commitString(). Si replacementLength() vaut 0, la fonction replacementStart() renvoie la position d’insertion pour la chaîne commitString().
Lors du remplacement, la zone de la chaîne de pré-édition est ignorée ; ainsi, un remplacement commençant à -1 et d’une longueur de 2 supprimera le dernier caractère avant la chaîne de pré-édition et le premier caractère après celle-ci, puis insérera la chaîne de validation directement avant la chaîne de pré-édition.
Si le widget prend en charge les fonctions « annuler » et « refaire », cette opération est ajoutée à la pile d’annulation.
- S’il n’y a pas de chaîne de pré-édition actuelle, insérez la chaîne « preeditString() » à la position actuelle du curseur ; sinon, remplacez la chaîne « preeditString » précédente par celle reçue via cet événement.
Si le widget implémente les fonctions d’annulation et de rétablissement, la méthode preeditString() ne doit en aucun cas influencer la pile d’annulation/rétablissement.
Le widget doit examiner la liste des attributs à appliquer à la chaîne de pré-édition. Il doit au moins prendre en charge les attributs « TextFormat » et « Cursor » et les afficher conformément aux spécifications.
Voir également QInputMethod.
Documentation sur les types de membres
enum QInputMethodEvent::AttributeType
| Constante | Valeur | Description |
|---|---|---|
QInputMethodEvent::TextFormat | 0 | QTextCharFormat QVariant e de la partie de la chaîne de pré-édition spécifiée par start et length. value contient un format de type spécifiant le rendu de cette partie de la chaîne de pré-édition. Il ne doit y avoir qu’un seul format au maximum pour chaque partie de la chaîne de pré-édition. Si plusieurs formats sont spécifiés pour un même caractère de la chaîne, le comportement est indéfini. Une implémentation conforme doit au minimum respecter les propriétés backgroundColor, textColor et fontUnderline du format. QTextFormat |
QInputMethodEvent::Cursor | 1 | Si elle est définie, un curseur doit s'afficher à l'intérieur de la chaîne de pré-édition à la position start. 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 une QVariant de type QColor, cette couleur sera utilisée pour l'affichage 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 sont spécifiés, le comportement est indéfini. |
QInputMethodEvent::Language | 2 | La variante contient un objet « QLocale » spécifiant la langue d’une partie donnée de la chaîne de pré-édition. Il ne doit y avoir qu’une seule langue définie pour chaque partie de la chaîne de pré-édition. Si plusieurs langues sont spécifiées pour un caractère quelconque de la chaîne, le comportement est indéfini. |
QInputMethodEvent::Ruby | 3 | Le texte en ruby pour une partie de la chaîne de pré-édition. Il ne doit y avoir qu’un seul texte en ruby défini pour chaque partie de la chaîne de pré-édition. Si plusieurs sont spécifiés pour un caractère quelconque 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 textuel de l’éditeur. Contrairement à ` Cursor`, cet attribut n’agit pas sur le texte de pré-édition, mais sur le texte environnant. Le curseur sera déplacé une fois la chaîne de validation validée, et la chaîne de pré-édition se trouvera alors à 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é. La méthode ` commitString()` fournit toujours la représentation en texte brut du texte validé. |
Voir également Attribute.
Documentation des fonctions membres
QInputMethodEvent::QInputMethodEvent()
Crée un événement de type QEvent::InputMethod. Les propriétés attributes(), preeditString(), commitString(), replacementStart() et replacementLength() sont initialisées à leurs valeurs par défaut.
Voir également setCommitString().
QInputMethodEvent::QInputMethodEvent(const QString &preeditText, const QList<QInputMethodEvent::Attribute> &attributes)
Crée un événement de type QEvent::InputMethod. Le texte « preedit » est défini sur preeditText, et les attributs sur attributes.
Les valeurs de commitString(), replacementStart() et replacementLength() peuvent être définies à l’aide de la fonction setCommitString().
Voir également preeditString() et attributes().
[protected delete] QInputMethodEvent::QInputMethodEvent(QInputMethodEvent &&)
Crée par « move » une instance de ` QInputMethodEvent`. Cette fonction est supprimée.
const QList<QInputMethodEvent::Attribute> &QInputMethodEvent::attributes() const
Renvoie la liste des attributs transmis au constructeur QInputMethodEvent. Ces attributs déterminent l'apparence visuelle de la chaîne « preedit » (l'apparence visuelle du texte situé en dehors de cette chaîne est gérée uniquement par le widget).
Voir également preeditString() et Attribute.
const QString &QInputMethodEvent::commitString() const
Renvoie le texte qui doit être ajouté (ou remplacer certaines parties) du texte du widget d'édition. Il s'agit généralement du résultat des opérations de saisie et doit être inséré dans le texte du widget juste avant la chaîne de pré-édition.
Voir également setCommitString(), preeditString(), replacementStart() et replacementLength().
const QString &QInputMethodEvent::preeditString() const
Renvoie le texte avant modification, c'est-à-dire le texte tel qu'il était avant que l'utilisateur ne commence à le modifier.
Voir également commitString() et attributes().
int QInputMethodEvent::replacementLength() const
Renvoie le nombre de caractères à remplacer dans la chaîne de pré-édition.
Voir également 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 à pré-éditer.
Voir aussi replacementLength() et setCommitString().
void QInputMethodEvent::setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0)
Définit la chaîne de validation sur « commitString ».
La chaîne de validation est le texte qui doit être ajouté au texte du widget d'édition (ou en remplacer certaines parties). Elle résulte généralement des opérations de saisie et doit être insérée dans le texte du widget juste avant la chaîne de pré-édition.
Si la chaîne de validation doit remplacer certaines parties du texte dans l’éditeur, ` replaceLength ` spécifie le nombre de caractères à remplacer. ` replaceFrom ` spécifie la position à partir de laquelle les caractères doivent être remplacés, par rapport au début de la chaîne de pré-édition.
Voir également commitString(), replacementStart() et replacementLength().
[protected delete] QInputMethodEvent &QInputMethodEvent::operator=(QInputMethodEvent &&)
Cette opération affecte « other » à cette instance de « QInputMethodEvent ». Cette fonction est supprimée.
[noexcept protected default] QInputMethodEvent &QInputMethodEvent::operator=(const QInputMethodEvent &other)
Attribue par copie l'other à cette instance d'QInputMethodEvent.
© 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.