InputPanel QML Type

仮想キーボードのUIを提供する。詳細...

Import Statement: import QtQuick.VirtualKeyboard
Inherits:

Item

プロパティ

シグナル

詳細説明

キーボードのサイズは、利用可能な幅から自動的に計算されます。つまり、キーボードは現在のスタイルによって指定された縦横比を維持します。したがって、アプリケーションはInputPanelのwidthy 座標のみを設定し、height は設定しないでください。

モジュールが提供する他のすべてのQMLタイプと同様に、InputPanelを使う前にQT_IM_MODULE 環境変数をqtvirtualkeyboard に設定する必要があります。詳しくはプラグインのロードを参照してください。

注意: InputPanelのインスタンスはアプリケーション内に1つだけ持つことができます。パネルはモーダルダイアログによってブロックされることはありませんが、より高い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 で導入されました。


このドキュメントは、QtQuick.VirtualKeyboard 2.4で導入されました 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。