InputPanel QML Type

가상 키보드 UI를 제공합니다. 더 보기...

Import Statement: import QtQuick.VirtualKeyboard
Inherits:

Item

속성

신호

자세한 설명

키보드 크기는 사용 가능한 너비에서 자동으로 계산됩니다. 즉, 키보드가 현재 스타일에 지정된 종횡비를 유지합니다. 따라서 애플리케이션은 입력 패널의 widthy 좌표만 설정하고 height 는 설정하지 않아야 합니다.

모듈에서 제공하는 다른 모든 QML 유형과 마찬가지로 InputPanel을 사용하기 전에 QT_IM_MODULE 환경 변수를 qtvirtualkeyboard 으로 설정해야 합니다. 자세한 내용은 플러그인 로딩하기를 참조하세요.

참고: 애플리케이션에 입력 패널 인스턴스는 하나만 가질 수 있습니다. 패널은 모달 대화 상자에 의해 차단되지는 않지만 z 값이 더 높은 항목에 의해 가려질 수 있습니다.

속성 문서

active : bool [since QtQuick.VirtualKeyboard 2.0]

이 속성은 입력 패널의 활성 상태를 반영합니다. 이 속성이 true 일 때 키보드는 사용자에게 표시되어야 합니다.

이 프로퍼티는 QtQuick.VirtualKeyboard 2.0에 도입되었습니다.


externalLanguageSwitchEnabled : bool [since QtQuick.VirtualKeyboard 2.4]

이 속성은 외부 언어 전환 메커니즘을 활성화합니다. 이 속성이 true 인 경우 가상 키보드는 내장 언어 팝업을 표시하지 않고 대신 externalLanguageSwitch 신호를 방출합니다. 애플리케이션은 이 신호를 처리하고 대신 사용자 지정 언어 선택 대화 상자를 표시할 수 있습니다.

이 프로퍼티는 QtQuick.VirtualKeyboard 2.4에 도입되었습니다.


신호 문서

[since QtQuick.VirtualKeyboard 2.4] externalLanguageSwitch(var localeList, int currentIndex)

이 신호는 externalLanguageSwitchEnabledtrue 이고 사용자가 언어 전환 키를 눌렀을 때 발생합니다.

가상 키보드에 내장된 언어 팝업 대신 사용자 지정 언어 대화 상자를 표시하는 후크 역할을 합니다.

localeList 매개변수에는 선택할 수 있는 로캘 이름 목록이 포함되어 있습니다. 특정 언어에 대한 자세한 정보를 얻으려면 Qt.locale() 함수를 사용하세요. currentIndexlocaleList 에서 현재 로캘의 인덱스입니다. 이 항목은 UI에서 현재 항목으로 강조 표시되어야 합니다.

새 언어를 선택하려면 VirtualKeyboardSettings.locale 속성을 사용합니다.

아래는 사용자 지정 언어 대화 상자 구현을 보여주는 예제입니다:

Dialog {
    id: languageDialog
    title: "Select Input Language"
    modality: Qt.ApplicationModal

    function show(localeList, currentIndex) {
        languageListModel.clear()
        for (var i = 0; i < localeList.length; i++) {
            languageListModel.append({localeName: localeList[i], displayName: Qt.locale(localeList[i]).nativeLanguageName})
        }
        languageListView.currentIndex = currentIndex
        languageListView.positionViewAtIndex(currentIndex, ListView.Center)
        languageDialog.visible = true
    }

    contentItem: ListView {
        id: languageListView
        model: ListModel {
            id: languageListModel
            function selectItem(index) {
                VirtualKeyboardSettings.locale = languageListModel.get(index).localeName
                languageDialog.visible = false
            }
        }
        delegate: Item {
            id: languageListItem
            width: languageNameTextMetrics.width * 17
            height: languageNameTextMetrics.height + languageListLabel.anchors.topMargin + languageListLabel.anchors.bottomMargin
            Text {
                id: languageListLabel
                anchors.left: parent.left
                anchors.top: parent.top
                anchors.leftMargin: languageNameTextMetrics.height / 2
                anchors.rightMargin: anchors.leftMargin
                anchors.topMargin: languageNameTextMetrics.height / 3
                anchors.bottomMargin: anchors.topMargin
                text: languageNameFormatter.elidedText
                color: "#5CAA15"
                font {
                    weight: Font.Normal
                    pixelSize: 28
                }
            }
            TextMetrics {
                id: languageNameTextMetrics
                font {
                    weight: Font.Normal
                    pixelSize: 28
                }
                text: "X"
            }
            TextMetrics {
                id: languageNameFormatter
                font {
                    weight: Font.Normal
                    pixelSize: 28
                }
                elide: Text.ElideRight
                elideWidth: languageListItem.width - languageListLabel.anchors.leftMargin - languageListLabel.anchors.rightMargin
                text: displayName
            }
            MouseArea {
                anchors.fill: parent
                hoverEnabled: true
                onClicked: {
                    if (index === -1)
                        return
                    parent.ListView.view.currentIndex = index
                    parent.ListView.view.model.selectItem(index)
                }
            }
            states: State {
                name: "current"
                when: languageListItem.ListView.isCurrentItem
                PropertyChanges {
                    target: languageListLabel
                    color: "black"
                }
            }
        }
    }
}

그러면 대화 상자가 선언됩니다:

LanguageDialog {
    id: languageDialog
    width: 400
    height: 400
}

애플리케이션의 InputPanel 에 다음 코드를 추가합니다:

InputPanel {
    id: inputPanel
    externalLanguageSwitchEnabled: true
    onExternalLanguageSwitch: languageDialog.show(localeList, currentIndex)
    // ...
}

이제 언어 전환 키를 누르면 사용자 지정 대화 상자가 표시됩니다.

참고: 해당 핸들러는 onExternalLanguageSwitch 입니다.

이 신호는 QtQuick.VirtualKeyboard 2.4에 도입되었습니다.


© 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.