Qt Quick における仮想キーボード

この例では、Qt Quick アプリケーションで仮想キーボードを使用する方法を示します。

この例には、デスクトップ用と組み込み用の2つの実装があります。前者のバージョンでは、仮想キーボードを使用して複数のテキスト・フィールドにテキスト入力を可能にし、後者のバージョンでは、同じUIを使用しますが、カスタムの仮想キーボードInputPanel を使用します。basic.pro 。次のスニペットは、CONFIGオプションに基づいて適切な実装を選択するために、qmakeプロジェクトがどのようにセットアップされるかを示しています:

!qtConfig(vkb-desktop) {
    DEFINES += MAIN_QML=\\\"basic-b2qt.qml\\\"
} else {
    DEFINES += MAIN_QML=\\\"Basic.qml\\\"
}

この例では、.qml ファイルをロードする前にQT_IM_MODULE 環境変数を設定することで、仮想キーボードを有効にしています:

#include <QQuickView>
#include <QGuiApplication>
#include <QQmlEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QGuiApplication app(argc, argv);
    QQuickView view(QString("qrc:/%2").arg(MAIN_QML));
    if (view.status() == QQuickView::Error)
        return -1;
    view.setResizeMode(QQuickView::SizeRootObjectToView);

    view.show();

    return app.exec();
}

これに加えて、TextFieldTextArea のカスタム項目を使用し、EnterKeyAction 添付プロパティを使用して[ENTER]キーの動作を設定します。

import QtQuick
import QtQuick.Controls
import QtQuick.VirtualKeyboard
import "content"

Rectangle {
    ...
                TextField {
                    width: parent.width
                    placeholderText: "One line field"
                    enterKeyAction: EnterKeyAction.Next
                    onAccepted: passwordField.focus = true
                }
    ...
                TextArea {
                    id: textArea
                    width: parent.width
                    placeholderText: "Multiple line field"
                    height: Math.max(206, implicitHeight)
                }
}

TextFieldTextArea コントロールは、それぞれのQt Quick Controls 2タイプをenterKeyEnabledenterKeyAction プロパティで拡張しています。スニペット内のTextFieldTextArea インスタンスは、デフォルトの動作を変更するためにこれらのプロパティを設定することができます。

サンプルを実行する

Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Example を参照してください。

サンプルプロジェクト @ code.qt.io

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