QInputMethodEvent Class
QInputMethodEvent 클래스는 입력 메서드 이벤트에 대한 매개 변수를 제공합니다. 더 보기...
Header: | #include <QInputMethodEvent> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
상속합니다: | QEvent |
- 상속된 멤버를 포함한 모든 멤버의 목록
- QInputMethodEvent는 이벤트 클래스의 일부입니다.
공용 형
class | Attribute |
enum | AttributeType { TextFormat, Cursor, Language, Ruby, Selection } |
공용 함수
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) |
상세 설명
입력 메서드 이벤트는 위젯에 텍스트를 입력하는 데 입력 메서드가 사용될 때 위젯으로 전송됩니다. 입력 메서드는 라틴 알파벳이 아닌 언어의 텍스트를 입력하는 데 널리 사용됩니다.
사용자 정의 텍스트 편집 위젯을 만들 때 입력 방법 이벤트를 수신하려면 Qt::WA_InputMethodEnabled 창 속성을 명시적으로 설정( QWidget::setAttribute() 함수 사용)해야 한다는 점에 유의하세요.
이 이벤트는 복잡한 문자 입력이 있는 언어를 올바르게 처리하고자 하는 키보드 입력 위젯 작성자가 관심을 가질 만한 이벤트입니다. 이러한 언어의 텍스트 입력은 일반적으로 3단계 프로세스로 이루어집니다:
- 작성 시작
사용자가 키보드의 첫 번째 키를 누르면 입력 컨텍스트가 생성됩니다. 이 입력 컨텍스트에는 입력된 문자의 문자열이 포함됩니다.
- 작성하기
새 키를 누를 때마다 입력 메서드는 지금까지 입력한 텍스트와 일치하는 문자열(사전 편집 문자열)을 생성하려고 시도합니다. 입력 컨텍스트가 활성화되어 있는 동안 사용자는 이 입력 컨텍스트에 속하는 문자열 내부에서만 커서를 이동할 수 있습니다.
- 완료
어느 시점에서 사용자는 특정 키를 사용하여 지금까지 입력한 텍스트와 일치하는 여러 문자열 중에서 선택할 수 있는 사용자 인터페이스 구성 요소를 활성화합니다. 사용자는 선택을 확인하거나 입력을 취소할 수 있으며, 두 경우 모두 입력 컨텍스트가 닫힙니다.
QInputMethodEvent는 이 세 단계를 모델링하고 중간 결과를 올바르게 렌더링하는 데 필요한 정보를 전송합니다. QInputMethodEvent에는 preeditString() 및 commitString()의 두 가지 주요 매개 변수가 있습니다. preeditString () 매개 변수는 현재 활성화된 사전 편집 문자열을 제공합니다. commitString () 매개 변수는 편집기 위젯의 텍스트에 추가되거나 일부가 대체될 텍스트를 제공합니다. 일반적으로 입력 작업의 결과이며 사전 편집 문자열 바로 앞에 위젯 텍스트에 삽입해야 합니다.
commitString()가 편집기에서 텍스트의 일부를 대체해야 하는 경우 replacementLength()에는 대체할 문자 수가 포함됩니다. replacementStart()에는 사전 편집 문자열의 시작을 기준으로 문자를 바꿀 위치가 포함됩니다.
여러 속성이 사전 편집 문자열의 시각적 모양을 제어합니다(사전 편집 문자열 외부 텍스트의 시각적 모양은 위젯으로만 제어됨). AttributeType 열거형은 설정할 수 있는 다양한 속성을 설명합니다.
QWidget::inputMethodEvent() 또는 QGraphicsItem::inputMethodEvent()을 구현하는 클래스는 최소한 TextFormat 및 Cursor 속성을 이해하고 준수해야 합니다.
입력 메서드는 위젯이나 그래픽 항목의 특정 속성을 쿼리할 수 있어야 하므로 하위 클래스도 각각 QWidget::inputMethodQuery() 및 QGraphicsItem::inputMethodQuery()를 구현해야 합니다.
입력 메서드 이벤트를 수신하면 텍스트 위젯은 다음 단계를 수행해야 합니다:
- 위젯에 선택된 텍스트가 있는 경우 선택된 텍스트를 제거해야 합니다.
- replacementStart()로 시작하는 텍스트를 replacementLength()의 길이로 제거하고 commitString()로 대체합니다. replacementLength ()가 0인 경우 replacementStart()는 commitString()의 삽입 위치를 지정합니다.
바꾸기를 수행할 때 미리 편집한 문자열의 영역은 무시되므로 -1에서 시작하여 길이가 2인 바꾸기는 미리 편집한 문자열 앞의 마지막 문자와 뒤의 첫 문자를 제거하고, 미리 편집한 문자열 바로 앞에 커밋 문자열을 삽입합니다.
위젯이 실행 취소/다시 실행을 구현하는 경우 이 작업은 실행 취소 스택에 추가됩니다.
- 현재 사전 편집 문자열이 없는 경우 현재 커서 위치에 preeditString()를 삽입하고, 그렇지 않으면 이전 preeditString 을 이 이벤트에서 받은 것으로 바꿉니다.
위젯이 실행 취소/다시 실행을 구현하는 경우 preeditString()는 실행 취소/다시 실행 스택에 어떤 식으로든 영향을 미치지 않아야 합니다.
위젯은 사전 편집 문자열에 적용할 속성 목록을 검사해야 합니다. 최소한 TextFormat 및 커서 속성을 이해하고 지정된 대로 렌더링해야 합니다.
QInputMethod 를참조하세요 .
멤버 유형 문서
enum QInputMethodEvent::AttributeType
상수 | 값 | 설명 |
---|---|---|
QInputMethodEvent::TextFormat | 0 | 시작 및 길이로 지정된 사전 편집 문자열의 일부에 대한 QTextCharFormat. 값에는 사전 편집 문자열의 이 부분의 렌더링을 지정하는 QTextFormat 유형의 QVariant 이 포함됩니다. 사전 편집 문자열의 모든 부분에 대해 최대 하나의 형식이 있어야 합니다. 문자열의 어떤 문자에 대해 여러 개가 지정되면 동작이 정의되지 않습니다. 이를 준수하는 구현은 최소한 포맷의 배경색, 텍스트색 및 밑줄 속성을 준수해야 합니다. |
QInputMethodEvent::Cursor | 1 | 이 속성이 설정되어 있으면 미리 편집 문자열의 시작 위치에 커서가 표시되어야 합니다. 길이 변수는 커서 표시 여부를 결정합니다. 길이가 0이면 커서가 보이지 않습니다. 값이 QColor 유형의 QVariant 이면 이 색이 커서를 렌더링하는 데 사용되며, 그렇지 않으면 주변 텍스트의 색이 사용됩니다. 커서 속성은 이벤트당 최대 하나만 지정할 수 있습니다. 여러 개가 지정되면 동작이 정의되지 않습니다. |
QInputMethodEvent::Language | 2 | 변형에는 사전 편집 문자열의 특정 부분의 언어를 지정하는 QLocale 객체가 포함됩니다. 사전 편집 문자열의 모든 부분에 대해 최대 하나의 언어만 설정할 수 있습니다. 문자열의 어떤 문자에 대해 여러 개가 지정되면 동작이 정의되지 않습니다. |
QInputMethodEvent::Ruby | 3 | 사전 수정 문자열의 일부에 대한 루비 텍스트입니다. 사전 수정 문자열의 모든 부분에 대해 최대 하나의 루비 텍스트만 설정해야 합니다. 문자열의 어떤 문자에 대해 여러 개가 지정되면 동작이 정의되지 않습니다. |
QInputMethodEvent::Selection | 4 | 설정된 경우 편집 커서는 편집기 텍스트 내용에서 지정된 위치로 이동해야 합니다. Cursor 와 달리 이 속성은 사전 편집 텍스트가 아니라 주변 텍스트에서 작동합니다. 커서는 커밋 문자열이 커밋된 후에 이동되며, 미리 수정 문자열은 새 편집 위치에 위치하게 됩니다. 시작 위치는 새 위치를 지정하고 길이 변수를 사용하여 해당 지점부터 선택 영역을 설정할 수 있습니다. 이 값은 사용되지 않습니다. |
Attribute 를참조하세요 .
멤버 함수 문서
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()도 참조하세요 .
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()도 참조하세요 .
© 2025 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.