이 페이지에서

QInputMethodEvent Class

QInputMethodEvent 클래스는 입력 방식 이벤트에 대한 매개변수를 제공합니다. 더 보기...

헤더: #include <QInputMethodEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
상속: QEvent

공개 유형

class Attribute
enum AttributeType { TextFormat, Cursor, Language, Ruby, Selection, MimeData }

공개 함수

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)

보호된 함수

QInputMethodEvent(QInputMethodEvent &&)
QInputMethodEvent &operator=(QInputMethodEvent &&)
QInputMethodEvent &operator=(const QInputMethodEvent &other)

상세 설명

입력 방식 이벤트는 입력 방식을 사용하여 위젯에 텍스트를 입력할 때 위젯으로 전송됩니다. 입력 방식은 비라틴 알파벳을 사용하는 언어의 텍스트를 입력하는 데 널리 사용됩니다.

사용자 정의 텍스트 편집 위젯을 생성할 때는 입력 방식 이벤트를 수신하기 위해 ( QWidget::setAttribute() 함수를 사용하여) Qt::WA_InputMethodEnabled 창 속성을 명시적으로 설정해야 합니다.

이 이벤트는 복잡한 문자 입력이 필요한 언어를 올바르게 처리하고자 하는 키보드 입력 위젯 개발자에게 유용합니다. 이러한 언어의 텍스트 입력은 일반적으로 다음 세 단계로 이루어집니다:

  1. 입력 시작

    사용자가 키보드의 첫 번째 키를 누르면 입력 컨텍스트가 생성됩니다. 이 입력 컨텍스트에는 입력된 문자들의 문자열이 포함됩니다.

  2. 작성

    새로운 키가 눌릴 때마다 입력 방식은 지금까지 입력된 텍스트에 해당하는 ‘사전 편집 문자열(preedit string)’을 생성하려고 시도합니다. 입력 컨텍스트가 활성화된 동안 사용자는 이 입력 컨텍스트에 속한 문자열 내에서만 커서를 이동할 수 있습니다.

  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()의 삽입 위치를 반환합니다.

    치환을 수행할 때 preedit 문자열 영역은 무시되므로, -1에서 시작하여 길이가 2인 치환은 preedit 문자열 바로 앞의 마지막 문자와 그 뒤의 첫 번째 문자를 제거하고, commit 문자열을 preedit 문자열 바로 앞에 삽입합니다.

    위젯이 실행 취소/다시 실행 기능을 구현하는 경우, 이 작업은 실행 취소 스택에 추가됩니다.

  3. 현재 프리편집 문자열이 없는 경우, preeditString()을 현재 커서 위치에 삽입하고, 그렇지 않은 경우 이전 preeditString 을 이 이벤트에서 수신한 문자열로 대체합니다.

    위젯이 실행 취소/다시 실행 기능을 구현하는 경우, ` preeditString()`는 실행 취소/다시 실행 스택에 어떠한 영향도 주어서는 안 됩니다.

    위젯은 사전 편집 문자열에 적용할 속성 목록을 검토해야 합니다. 위젯은 최소한 TextFormat 및 Cursor 속성을 이해하고, 지정된 대로 렌더링해야 합니다.

QInputMethod도 참조하십시오 .

멤버 유형 문서

enum QInputMethodEvent::AttributeType

상수값설명
QInputMethodEvent::TextFormat0start 및 length로 지정된 사전 편집 문자열의 일부에 대한 ` QTextCharFormat `입니다. value에는 사전 편집 문자열의 이 부분에 대한 렌더링을 지정하는 ` QTextFormat ` 유형의 ` QVariant `이 포함됩니다. 사전 편집 문자열의 각 부분마다 최대 하나의 형식만 있어야 합니다. 문자열 내의 어떤 문자에 대해 여러 형식이 지정된 경우, 동작은 정의되지 않습니다. 규격에 부합하는 구현체는 최소한 format의 backgroundColor, textColor 및 fontUnderline 속성을 준수해야 합니다.
QInputMethodEvent::Cursor1설정된 경우, preedit 문자열 내 start 위치에 커서가 표시되어야 합니다. length 변수는 커서가 표시될지 여부를 결정합니다. length가 0이면 커서는 보이지 않습니다. value가 QColor 유형의 QVariant 인 경우 이 색상이 커서 렌더링에 사용되며, 그렇지 않으면 주변 텍스트의 색상이 사용됩니다. 이벤트당 Cursor 속성은 최대 하나만 지정되어야 합니다. 여러 개가 지정된 경우 동작은 정의되지 않습니다.
QInputMethodEvent::Language2이 변형에는 사전 편집 문자열의 특정 부분에 대한 언어를 지정하는 QLocale 객체가 포함됩니다. 사전 편집 문자열의 각 부분에 대해 설정된 언어는 하나만 있어야 합니다. 문자열 내의 어떤 문자에 대해 여러 언어가 지정된 경우, 동작은 정의되지 않습니다.
QInputMethodEvent::Ruby3프리편집 문자열의 특정 부분에 대한 루비 텍스트입니다. 프리편집 문자열의 각 부분에 대해 루비 텍스트는 최대 하나만 설정되어야 합니다. 문자열 내의 어떤 문자에 대해 여러 개가 지정된 경우, 동작은 정의되지 않습니다.
QInputMethodEvent::Selection4이 속성이 설정된 경우, 편집 커서는 편집기 텍스트 내용의 지정된 위치로 이동해야 합니다. ` Cursor`와 달리, 이 속성은 프리에디트 텍스트가 아닌 주변 텍스트에 적용됩니다. 커서는 커밋 문자열이 커밋된 후에 이동되며, 프리에디트 문자열은 새로운 편집 위치에 배치됩니다. 시작 위치는 새로운 위치를 지정하며, 길이 변수를 사용하여 해당 지점부터 시작하는 선택 영역을 설정할 수 있습니다. 이 값은 사용되지 않습니다.
QInputMethodEvent::MimeData5이 속성이 설정된 경우, 변수에는 커밋된 텍스트를 나타내는 ` QMimeData ` 객체가 포함됩니다. ` commitString()`는 여전히 커밋된 텍스트의 일반 텍스트 표현을 제공합니다.

Attribute도 참조하십시오 .

멤버 함수 설명서

QInputMethodEvent::QInputMethodEvent()

QEvent::InputMethod 유형의 이벤트를 생성합니다. attributes(), preeditString(), commitString(), replacementStart() 및 replacementLength()은 기본값으로 초기화됩니다.

setCommitString()도 참조하십시오 .

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

QEvent::InputMethod 유형의 이벤트를 생성합니다. preedit 텍스트는 preeditText 로, 속성은 attributes 로 설정됩니다.

commitString(), replacementStart() 및 replacementLength() 값은 setCommitString()을 사용하여 설정할 수 있습니다.

preeditString() 및 attributes()도 참조하십시오 .

[protected delete] QInputMethodEvent::QInputMethodEvent(QInputMethodEvent &&)

QInputMethodEvent 의 인스턴스를 이동 생성합니다. 이 함수는 삭제되었습니다.

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

QInputMethodEvent 생성자에 전달된 속성 목록을 반환합니다. 이 속성들은 preedit 문자열의 시각적 모양을 제어합니다(preedit 문자열 외부의 텍스트 모양은 위젯에 의해서만 제어됩니다).

preeditString() 및 Attribute도 참조하십시오 .

const QString &QInputMethodEvent::commitString() const

에디터 위젯의 텍스트에 추가되거나(또는 일부를 대체해야 하는) 텍스트를 반환합니다. 이는 대개 입력 작업의 결과이며, 위젯의 텍스트 중 ‘preedit’ 문자열 바로 앞에 삽입되어야 합니다.

setCommitString(), preeditString(), replacementStart(), replacementLength()도 참조하십시오 .

const QString &QInputMethodEvent::preeditString() const

사용자가 편집을 시작하기 전의 텍스트, 즉 ‘편집 전’ 텍스트를 반환합니다.

commitString() 및 attributes()도 참조하십시오 .

int QInputMethodEvent::replacementLength() const

preedit 문자열에서 대체할 문자 수를 반환합니다.

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()도 참조하십시오 .

[protected delete] QInputMethodEvent &QInputMethodEvent::operator=(QInputMethodEvent &&)

other 를 이 QInputMethodEvent 인스턴스에 할당합니다. 이 함수는 삭제됩니다.

[noexcept protected default] QInputMethodEvent &QInputMethodEvent::operator=(const QInputMethodEvent &other)

other 를 이 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.