配備ガイド
概要
このドキュメントでは、Qt Virtual Keyboard プラグインを Qt アプリケーションにデプロイして使用する方法について説明します。
配置
様々な Qt Virtual Keyboard プラグインとファイルは、以下の場所に配置されます:
項目 | デスクトップのインストールパス | Boot2Qt インストールパス |
---|---|---|
qtvirtualkeyboardplugin プラットフォーム入力コンテキストプラグイン | <QT_INSTALL_PLUGINS>/platforminputcontexts | /system/plugins/platforminputcontexts |
qtvkbplugin QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard | /system/qml/QtQuick/VirtualKeyboard |
qtvkbcomponentsplugin QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Components | /system/qml/QtQuick/VirtualKeyboard/Components |
qtvkblayoutsplugin QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Layouts | /system/qml/QtQuick/VirtualKeyboard/Layouts |
qtvkbplugins プラグイン QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins | /system/qml/QtQuick/VirtualKeyboard/Plugins |
拡張 QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/* | /system/qml/QtQuick/VirtualKeyboard/Plugins/* |
qtvkbsettingsplugin QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Settings | /system/qml/QtQuick/VirtualKeyboard/Settings |
qtvkbstylesplugin QML プラグイン | <QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Styles | /system/qml/QtQuick/VirtualKeyboard/Styles |
仮想キーボードデータ | <QT_INSTALL_DATA>/qtvirtualkeyboard | /system/qtvirtualkeyboard |
依存関係
詳しくはQt のライブラリのデプロイ をご覧ください。
統合方法
Qt Virtual Keyboardは現在2つの統合方法をサポートしています:
Desktop
既存のアプリケーションに変更を加える必要がありません。Qt Virtual Keyboard はシステム内の全ての Qt アプリケーションで利用可能です。この統合方法では、キーボードは専用のトップレベルウィンドウに表示されます。
Application
仮想キーボードは、QML のInputPanel アイテムをインスタンス化することで、Qt アプリケーション自体に埋め込まれます。この方法は、複数のトップレベルウィンドウがサポートされていない環境(組み込み機器など)では必須ですが、デスクトップアプリケーションでも使用できます。
このメソッドはQt Waylandコンポジタがサーバサイドの仮想キーボードを提供するためにも使用できます。詳細は以下のセクションを参照してください。
統合方法はプロジェクトファイルによって自動的に選択されます。しかし、デスクトップ環境では、QT_VIRTUALKEYBOARD_DESKTOP_DISABLE
環境変数を使用するか、configure
コマンドラインに-no-vkb-desktop
を追加することで、デスクトップ統合方法をオーバーライドし、代わりにアプリケーション統合方法を使用することができます。
Qt WaylandでQt Virtual Keyboardを使う
このセクションでは、コンポジターとしてFancy Compositor のサンプルを使ってQtWidgets Line Edits のサンプルと対話するために Qt Virtual Keyboard を使う方法を説明します。
ここではUbuntu 18.04を使用し、ウィンドウシステムとしてX11を使用しています。コンポジターの例 (fancy-compositor
) は、X11 セッション内のウィンドウとして開きます。
- コンポジターを起動します:
QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl \ QT_IM_MODULE=qtvirtualkeyboard ./fancy-compositor -platform xcb
- クライアント・アプリケーションを実行する前に、QT_IM_MODULE が設定されていないことを確認してください:
unset QT_IM_MODULE
- Line Edits のサンプルをクライアントとして起動します:
./lineedits -platform wayland
- 行編集をクリックすると、Qt Virtual Keyboard の入力パネルが開きます。
問題が発生した場合、コンポジターの実行時に以下の環境変数を設定することで、問題の診断に役立つデバッグ出力を得ることができます:
WAYLAND_DEBUG=1 QT_LOGGING_RULES="qt.virtualkeyboard=true;qt.qpa.wayland*=true"
プラグインのロード
どちらの統合方法でも、アプリケーションはQT_IM_MODULE
環境変数を使用してプラグインをロードする必要があります。例えば
$ QT_IM_MODULE=qtvirtualkeyboard myapp
または main() 関数の中で行います:
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
デスクトップ統合では、Qt Virtual Keyboard を使うために必要なのはこのステップだけです。アプリケーションとの統合では、次の章で説明するように、InputPanel のインスタンスを作成する必要があります。
InputPanelの作成
次の例では、InputPanel を作成し、アプリケーションコンテナで画面領域を分割する方法を示します。
import QtQuick import QtQuick.VirtualKeyboard Item { id: root Item { id: appContainer anchors.left: parent.left anchors.top: parent.top anchors.right: parent.right anchors.bottom: inputPanel.top ... } InputPanel { id: inputPanel y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height anchors.left: parent.left anchors.right: parent.right } }
入力パネルは、アプリケーション・コンテナの隣の兄弟要素でなければなりません。入力パネルをアプリケーション・コンテナ内に配置しないことが重要です。また、入力パネルの高さは使用可能な幅に応じて自動的に更新されます。
環境変数
モジュールによって定義される環境変数がいくつかあります:
変数 | 目的 |
---|---|
qt_virtualkeyboard_hunspell_data_path | Hunspellデータファイルの場所を上書きします。 デフォルトの場所は 詳細については、「Hunspell Integration」を参照してください。 |
qt_virtualkeyboard_pinyin_dictionary | ピンイン辞書の場所を上書きします。 デフォルトでは、辞書はプラグインのリソースにバンドルされています。 リソースをバンドルしないようにするには、Qt configureコマンドラインに-vkb-no-bundle-pinyinを追加します。このシナリオでは、デフォルトの場所は |
qt_virtualkeyboard_cangjie_dictionary | Cangjie辞書の場所を上書きします。 デフォルトでは、辞書はプラグインのリソースにバンドルされています。 リソースをバンドルしないようにするには、Qt configureコマンドラインに-vkb-no-bundle-tcimeを追加してください。このシナリオでは、デフォルトの場所は |
qt_virtualkeyboard_zhuyin_dictionary | Zhuyin辞書の場所を上書きします。 デフォルトでは、辞書はプラグインのリソースにバンドルされています。 リソースをバンドルしないようにするには、Qt configureコマンドラインに-vkb-no-bundle-tcimeを追加します。このシナリオでは、デフォルトの場所は |
qt_virtualkeyboard_phrase_dictionary | フレーズ辞書の場所を上書きします。 デフォルトでは、辞書はプラグインのリソースにバンドルされています。 リソースをバンドルしないようにするには、Qt configure コマンドラインに-vkb-no-bundle-tcimeを追加します。このシナリオでは、デフォルトの場所は |
qt_virtualkeyboard_cerence_hwr_db_path | Cerence Handwriting 手書きデータベースの場所を指定します。 Cerence Handwriting 手書きデータベースのデフォルトの検索場所は次のとおりです:
環境変数には複数のパスを指定できます。複数のパスは、Windows ではセミコロンで区切られ、その他のオペレーティング システムではコロンで区切られます。 |
qt_virtualkeyboard_xt9_ldb_path | XT9データベースの場所を指定します。 LDB ファイルのデフォルトの検索場所は次のとおりです:
この環境変数を設定することで、追加の検索パスを指定できます。複数のパスは、Windowsではセミコロンで、他のOSではコロンで区切られる。 LDB ファイルは XT9 と Cerence Handwriting プラグイン間で共有されるため、この環境変数は両方のプラグインに影響します。 |
qt_virtualkeyboard_style | 仮想キーボードで使用するスタイルの場所を指定します。 これは QML でVirtualKeyboardSettings::styleName を設定するか、ビルド時に設定オプションを使って指定することもできます。 |
qt_virtualkeyboard_layout_path | 仮想キーボードで使うレイアウトの場所を指定します。 |
qt_virtualkeyboard_desktop_disable | デスクトップ統合方式を無効にします。 |
qt_virtualkeyboard_force_events_without_focus | Qt Virtual Keyboard が、テキスト入力にフォーカスがなくてもキーイベントを送ったり Shift キーを使ったりできるようにします。 この変数を有効にするには、アプリケーションの実行環境で明示的に設定する必要があります。アプリケーション自体でqputenv() を使用するだけでは十分ではありません。 |
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。