Spec-Zone.ru › Qt 5.11

Класс QInputMethodEvent

Класс QInputMethodEvent предоставляет параметры для событий обработки ввода. Подробнее...

Заголовок: #include <QInputMethodEvent>
qmake: QT += gui
Наследуется от: QEvent
  • Список всех членов, включая унаследованные

Открытые типы

класс Attribute
перечисление AttributeType { TextFormat, Cursor, Language, Ruby, Selection }

Открытые функции

QInputMethodEvent()
QInputMethodEvent(const QString &preeditText, const QList<QInputMethodEvent::Attribute> &attributes)
QInputMethodEvent(const QInputMethodEvent &other)
виртуальный ~QInputMethodEvent()
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)
  • 7 открытых функций, унаследованных от QEvent

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QEvent
  • 1 открытая переменная, унаследованная от QEvent
  • 1 статический открытый член, унаследованный от QEvent
  • 2 защищенных переменных, унаследованных от QEvent

Подробное описание

Класс QInputMethodEvent предоставляет параметры для событий обработки ввода.

События обработки ввода отправляются виджетам, когда используется метод ввода для ввода текста в виджет. Методы ввода широко используются для ввода текста для языков, не использующих латинский алфавит.

Обратите внимание, что при создании пользовательских виджетов редактирования текста атрибут окна Qt::WA_InputMethodEnabled необходимо явно установить (с помощью функции QWidget::setAttribute()), чтобы получать события обработки ввода.

События представляют интерес для авторов виджетов ввода с клавиатуры, которые хотят правильно обрабатывать языки с сложным вводом символов. Ввод текста на таких языках обычно происходит в три этапа:

  1. Начало составления текста

    Когда пользователь нажимает первую клавишу на клавиатуре, создается контекст ввода. Этот контекст будет содержать строку набранных символов.

  2. Составление текста

    При каждом нажатии новой клавиши метод ввода попытается создать соответствующую строку для введённого текста, называемую преобразуемой строкой. Пока активен контекст ввода, пользователь может только перемещать курсор внутри строки, принадлежащей этому контексту ввода.

  3. Завершение составления текста

    В какой-то момент пользователь активирует элемент пользовательского интерфейса (возможно, с помощью определённой клавиши), где он может выбрать из нескольких строк, соответствующих введённому тексту. Пользователь может либо подтвердить свой выбор, либо отменить ввод; в любом случае контекст ввода будет закрыт.

QInputMethodEvent моделирует эти три стадии и передает необходимую информацию для правильного отображения промежуточного результата. QInputMethodEvent имеет два основных параметра: preeditString() и commitString(). Параметр preeditString() даёт текущую активную строку преобразуемого текста. Параметр commitString() даёт текст, который должен быть добавлен к (или заменить части) тексту виджета редактора. Обычно это результат операций ввода и его необходимо вставить в текст виджетов непосредственно перед строкой преобразуемого текста.

Если commitString() должен заменить части текста в редакторе, replacementLength() будет содержать количество заменяемых символов. replacementStart() содержит позицию, относительно начала строки преобразуемого текста, с которой следует заменить символы.

Несколько атрибутов контролируют визуальное отображение строки преобразуемого текста (визуальное отображение текста за пределами строки преобразуемого текста контролируется только виджетом). Перечисление AttributeType описывает различные атрибуты, которые можно установить.

Класс, реализующий QWidget::inputMethodEvent() или QGraphicsItem::inputMethodEvent() должен, по крайней мере, понимать и учитывать атрибуты TextFormat и Cursor.

Так как методам ввода необходимо иметь возможность запрашивать определённые свойства у виджета или графического элемента, подклассы также должны реализовывать QWidget::inputMethodQuery() и QGraphicsItem::inputMethodQuery() соответственно.

При получении события обработки ввода виджет текста должен выполнить следующие шаги:

  1. Если в виджете выделен текст, выделенный текст должен быть удалён.
  2. Удалить текст, начиная с replacementStart() и длиной replacementLength(), и заменить его на commitString(). Если replacementLength() равно 0, replacementStart() указывает позицию вставки commitString().

    При замене область строки преобразуемого текста игнорируется, таким образом, замена, начинающаяся с -1 и длиной 2, удалит последний символ перед строкой преобразуемого текста и первый символ после неё, и вставит строку подтверждения непосредственно перед строкой преобразуемого текста.

    Если виджет реализует отмену/повтор, эта операция добавляется в стек отмены/повтора.

  3. Если нет текущей строки преобразуемого текста, вставить preeditString() в текущую позицию курсора; в противном случае заменить предыдущую preeditString на полученную из этого события.

    Если виджет реализует отмену/повтор, preeditString() не должен влиять на стек отмены/повтора каким-либо образом.

    Виджет должен проверить список атрибутов для применения к строке преобразуемого текста. Он должен понимать по крайней мере атрибуты TextFormat и Cursor и отображать их в соответствии со спецификацией.

См. также QInputMethod.

Документация типов членов

перечисление QInputMethodEvent::AttributeType

Константа Значение Описание
QInputMethodEvent::TextFormat 0 A QTextCharFormat для части строки предварительного редактирования, указанной параметрами start и length. value содержит QVariant типа QTextFormat, определяющего отображение этой части строки предварительного редактирования. Должна быть не более одной записи форматирования для каждой части строки предварительного редактирования. Если для любого символа строки задано несколько, поведение не определено. Соответствующая реализация должна по меньшей мере учитывать свойства backgroundColor, textColor и fontUnderline форматирования.
QInputMethodEvent::Cursor 1 Если задано, курсор должен отображаться внутри строки предварительного редактирования в позиции start. Переменная length определяет видимость курсора. Если длина равна 0, курсор невидим. Если значение является QVariant типа QColor, этот цвет будет использован для отображения курсора, в противном случае используется цвет окружающего текста. Должна быть не более одной атрибуты Cursor на событие. Если задано несколько, поведение не определено.
QInputMethodEvent::Language 2 Переменная содержит объект QLocale, определяющий язык определенной части строки предварительного редактирования. Должен быть задан не более один язык для каждой части строки предварительного редактирования. Если для любого символа строки задано несколько, поведение не определено.
QInputMethodEvent::Ruby 3 Текст ruby для части строки предварительного редактирования. Должен быть задан не более один текст ruby для каждой части строки предварительного редактирования. Если для любого символа строки задано несколько, поведение не определено.
QInputMethodEvent::Selection 4 Если задано, курсор редактирования должен быть перемещён в указанную позицию в содержимом текста редактора. В отличие от Cursor, этот атрибут не работает со строкой предварительного редактирования, а с окружающим текстом. Курсор будет перемещен после того, как строка подтверждения будет подтверждена, а строка предварительного редактирования будет расположена в новой позиции редактирования. Позиция start определяет новую позицию, а переменная length может использоваться для задания выделения, начинающегося с этой точки. Значение не используется.

См. также Атрибут.

Документация функций-членов

QInputMethodEvent::QInputMethodEvent()

Создает событие типа QEvent::InputMethod. attributes(), preeditString(), commitString(), replacementStart() и replacementLength() инициализируются значениями по умолчанию.

См. также setCommitString().

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

Создает событие типа QEvent::InputMethod. Текст предварительного редактирования устанавливается в preeditText, а атрибуты — в attributes.

Значения commitString(), replacementStart() и replacementLength() можно установить с помощью setCommitString().

См. также preeditString() и attributes().

QInputMethodEvent::QInputMethodEvent(const QInputMethodEvent &other)

Создает копию other.

[virtual] QInputMethodEvent::~QInputMethodEvent()

Уничтожает экземпляр QInputMethodEvent. Деструктор является виртуальным.

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

Возвращает список атрибутов, переданных конструктору QInputMethodEvent. Атрибуты управляют визуальным отображением строки предварительного редактирования (визуальное отображение текста за пределами строки предварительного редактирования управляется только виджетом).

См. также preeditString() и Attribute.

const QString &QInputMethodEvent::commitString() const

Возвращает текст, который должен быть добавлен к (или заменить части) текста виджета редактора. Обычно это результат операций ввода и должен быть вставлен в текст виджетов непосредственно перед строкой предварительного редактирования.

См. также setCommitString(), preeditString(), replacementStart() и replacementLength().

const QString &QInputMethodEvent::preeditString() const

Возвращает текст предварительного редактирования, то есть текст до того, как пользователь начал его редактировать.

См. также commitString() и attributes().

int QInputMethodEvent::replacementLength() const

Возвращает количество символов, которые должны быть заменены в строке предварительного редактирования.

См. также replacementStart() и setCommitString().

int QInputMethodEvent::replacementStart() const

Возвращает позицию, в которой символы должны быть заменены, относительно начала строки предварительного редактирования.

См. также replacementLength() и setCommitString().

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

Устанавливает строку подтверждения в commitString.

Строка подтверждения — это текст, который должен быть добавлен к (или частично заменён в) тексте виджета редактора. Обычно это результат операций ввода и должен быть вставлен в текст виджетов непосредственно перед строкой предварительного редактирования.

Если строка подтверждения должна заменить части текста в редакторе, replaceLength определяет количество заменяемых символов. replaceFrom определяет позицию, в которой символы должны быть заменены, относительно начала строки предварительного редактирования.

См. также commitString(), replacementStart() и replacementLength().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qinputmethodevent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API