Leitfaden für den Einsatz

Übersicht

Dieses Dokument beschreibt, wie das Qt Virtual Keyboard Plugin in Qt-Anwendungen eingesetzt und verwendet wird.

Bereitstellung

Die verschiedenen Qt Virtual Keyboard Plugins und Dateien werden an den folgenden Orten bereitgestellt:

ArtikelDesktop-InstallationspfadBoot2Qt-Installationspfad
qtvirtualkeyboardplugin Plattform-Eingabekontext-Plugin<QT_INSTALL_PLUGINS>/platforminputcontexts/system/plugins/platforminputcontexts
qtvkbplugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/system/qml/QtQuick/VirtualKeyboard
qtvkbKomponenten-Plugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Components/system/qml/QtQuick/VirtualKeyboard/Components
qtvkblayoutsplugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Layouts/system/qml/QtQuick/VirtualKeyboard/Layouts
qtvkbpluginsplugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/system/qml/QtQuick/VirtualKeyboard/Plugins
Erweiterung QML-Plugins<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/*/system/qml/QtQuick/VirtualKeyboard/Plugins/*
qtvkbsettingsplugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Settings/system/qml/QtQuick/VirtualKeyboard/Settings
qtvkbstylesplugin QML-Plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Styles/system/qml/QtQuick/VirtualKeyboard/Styles
Virtuelle Tastaturdaten<QT_INSTALL_DATA>/qtvirtualkeyboard/system/qtvirtualkeyboard

Abhängigkeiten

Lesen Sie mehr unter Einsatz von Qt-Bibliotheken.

Integrations-Methode

Qt Virtual Keyboard Qtvkbstyles unterstützt derzeit zwei alternative Integrationsmethoden für die Verwendung des Plugins:

  • Desktop: Erfordert keine Änderungen an bestehenden Anwendungen. Die virtuelle Tastatur ist für alle Qt-Anwendungen im System verfügbar.

    Bei dieser Integrationsmethode wird die Tastatur in einem eigenen Fenster auf oberster Ebene angezeigt.

  • ApplicationDie virtuelle Tastatur wird in die Qt-Anwendung selbst eingebettet, indem ein InputPanel -Element in QML instanziiert wird.

    Diese Methode ist obligatorisch in Umgebungen, in denen es keine Unterstützung für mehrere Top-Level-Fenster gibt (wie z.B. bei eingebetteten Geräten), kann aber auch in Desktop-Anwendungen verwendet werden.

    Diese Methode kann auch von Qt Wayland Compositors verwendet werden, um eine serverseitige virtuelle Tastatur bereitzustellen. Siehe den Abschnitt unten für Details.

Die Integrationsmethode wird automatisch in den Projektdateien ausgewählt. In Desktop-Umgebungen ist es jedoch möglich, die Desktop-Integrationsmethode außer Kraft zu setzen und stattdessen die Anwendungsintegrationsmethode zu verwenden, indem Sie die Umgebungsvariable QT_VIRTUALKEYBOARD_DESKTOP_DISABLE verwenden oder -no-vkb-desktop zur Befehlszeile configure hinzufügen.

Verwendung von Qt Virtual Keyboard mit Qt Wayland

In diesem Abschnitt wird erklärt, wie Qt Virtual Keyboard verwendet wird, um mit dem BeispielQt Widgets Line Edits zu interagieren, wobei das Beispiel Fancy Compositor als Compositor verwendet wird.

Wir werden Ubuntu 18.04 verwenden, um das Beispiel auszuführen, wobei X11 als Fenstersystem verwendet wird. Der Beispiel-Compositor (fancy-compositor) wird als Fenster innerhalb einer X11-Sitzung geöffnet.

  1. Starten Sie den Compositor:
    QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl \
    QT_IM_MODULE=qtvirtualkeyboard ./fancy-compositor -platform xcb
  2. Bevor Sie die Client-Anwendung starten, stellen Sie sicher, dass QT_IM_MODULE nicht gesetzt ist:
    unset QT_IM_MODULE
  3. Starten Sie das Line Edits-Beispiel als Client:
    ./lineedits -platform wayland
  4. Klicken Sie auf eine Zeilenbearbeitung und das Eingabefenster von Qt Virtual Keyboard wird geöffnet.

Wenn Probleme auftreten, können die folgenden Umgebungsvariablen beim Ausführen des Compositors gesetzt werden, um Debug-Ausgaben zu erhalten, die bei der Diagnose des Problems helfen können:

WAYLAND_DEBUG=1
QT_LOGGING_RULES="qt.virtualkeyboard=true;qt.qpa.wayland*=true"

Laden des Plugins

Bei beiden Integrationsmethoden muss die Anwendung die Umgebungsvariable QT_IM_MODULE verwenden, um das Plugin zu laden. Zum Beispiel:

$ QT_IM_MODULE=qtvirtualkeyboard myapp

oder in der main()-Funktion:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

Bei der Desktop-Integrationsmethode ist dieser Schritt alles, was für die Verwendung von Qt Virtual Keyboard erforderlich ist. Bei der Anwendungsintegrationsmethode muss die Anwendung eine Instanz von InputPanel erstellen, wie im folgenden Kapitel erläutert.

Erstellen eines InputPanels

Das folgende Beispiel zeigt, wie ein InputPanel erstellt wird und wie der Bildschirmbereich mit dem Anwendungscontainer geteilt werden kann.

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
    }
}

Das InputPanel muss ein Geschwisterelement neben dem Anwendungscontainer sein. Es ist wichtig, das Eingabefeld nicht innerhalb des Anwendungscontainers zu platzieren, da es sich dann mit dem Inhalt der Anwendung überlappen würde. Außerdem wird die Höhe des Eingabefeldes automatisch entsprechend der verfügbaren Breite aktualisiert; das Seitenverhältnis des Eingabefeldes ist konstant.

Umgebungsvariablen

Es gibt mehrere vom Modul definierte Umgebungsvariablen, die im Folgenden aufgeführt sind:

VariableZweck
QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATHSetzt den Speicherort der Hunspell-Datendateien außer Kraft.

Der Standardspeicherort hängt vom Wert von QLibraryInfo::path(QLibraryInfo::DataPath) ab. Für Qt-Bibliotheken, die aus dem Quellcode erstellt wurden, könnte dies zum Beispiel qtbase/qtvirtualkeyboard/hunspell sein.

Siehe Hunspell Integration für weitere Informationen.

QT_VIRTUALKEYBOARD_PINYIN_DICTIONARYSetzt den Speicherort des Pinyin-Wörterbuchs außer Kraft.

Standardmäßig ist das Wörterbuch in den Ressourcen des Plugins gebündelt.

Um die Bündelung der Ressourcen zu deaktivieren, fügen Sie -vkb-no-bundle-pinyin in die Qt configure Befehlszeile ein. In diesem Szenario hängt der Standard-Speicherort vom Wert von QLibraryInfo::path(QLibraryInfo::DataPath) ab. Für Qt-Bibliotheken, die aus dem Quellcode erstellt wurden, könnte dies zum Beispiel qtbase/qtvirtualkeyboard/pinyin/dict_pinyin.dat sein.

QT_VIRTUALKEYBOARD_CANGJIE_DICTIONARYSetzt den Speicherort des Cangjie-Wörterbuchs außer Kraft.

Standardmäßig ist das Wörterbuch in den Ressourcen des Plugins gebündelt.

Um die Bündelung der Ressourcen zu deaktivieren, fügen Sie -vkb-no-bundle-tcime in die Qt configure Kommandozeile ein. In diesem Szenario hängt der Standard-Speicherort vom Wert von QLibraryInfo::path(QLibraryInfo::DataPath) ab. Für Qt-Bibliotheken, die aus dem Quellcode erstellt wurden, könnte dies zum Beispiel qtbase/qtvirtualkeyboard/tcime/dict_cangjie.dat sein.

QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARYSetzt den Speicherort des Zhuyin-Wörterbuchs außer Kraft.

Standardmäßig ist das Wörterbuch in den Ressourcen des Plugins gebündelt.

Um die Bündelung der Ressourcen zu deaktivieren, fügen Sie -vkb-no-bundle-tcime zur Qt configure Kommandozeile hinzu. In diesem Szenario hängt der Standard-Speicherort vom Wert von QLibraryInfo::path(QLibraryInfo::DataPath) ab. Für Qt-Bibliotheken, die aus dem Quellcode erstellt wurden, könnte dies zum Beispiel qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat sein.

QT_VIRTUALKEYBOARD_PHRASE_DICTIONARYSetzt den Speicherort des Phrasenwörterbuchs außer Kraft.

Standardmäßig ist das Wörterbuch in den Ressourcen des Plugins gebündelt.

Um die Bündelung der Ressourcen zu deaktivieren, fügen Sie -vkb-no-bundle-tcime zur Qt configure Kommandozeile hinzu. In diesem Szenario hängt der Standard-Speicherort vom Wert von QLibraryInfo::path(QLibraryInfo::DataPath) ab. Für Qt-Bibliotheken, die aus dem Quellcode erstellt wurden, könnte dies zum Beispiel qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat sein.

QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATHGibt den Speicherort der Cerence Handwriting Handschriftdatenbank an.

Der Standard-Suchpfad für die Cerence Handwriting Handschrift-Datenbank ist:

  • QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/handwriting"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Handwriting"

Die Umgebungsvariable kann mehrere Pfade enthalten. Mehrere Pfade werden unter Windows mit Semikolon und unter anderen Betriebssystemen mit Doppelpunkt getrennt.

QT_VIRTUALKEYBOARD_XT9_LDB_PFADGibt den Speicherort der XT9-Datenbanken an.

Der Standard-Suchpfad für LDB-Dateien ist:

  • QT_VIRTUALKEYBOARD_XT9_LDB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/xt9"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Xt9"

Zusätzliche Suchpfade können durch Setzen dieser Umgebungsvariablen angegeben werden. Mehrere Pfade werden unter Windows mit Semikolon und unter anderen Betriebssystemen mit Doppelpunkt getrennt.

Die LDB-Dateien werden von den Plugins XT9 und Cerence Handwriting gemeinsam genutzt, daher wirkt sich diese Umgebungsvariable auf beide Plugins aus.

QT_VIRTUALKEYBOARD_STYLEGibt den Speicherort des Stils an, der für die virtuelle Tastatur verwendet werden soll.

Dies kann auch in QML durch die Einstellung VirtualKeyboardSettings::styleName oder zur Erstellungszeit mit Hilfe der Konfigurationsoptionen festgelegt werden.

QT_VIRTUELLE-TASTATUR_LAYOUT_PFADGibt den Speicherort der Layouts an, die mit der virtuellen Tastatur verwendet werden sollen.
QT_VIRTUALKEYBOARD_DESKTOP_DISABLEDeaktiviert die Desktop-Integrationsmethode.
QT_VIRTUALKEYBOARD_FORCE_EVENTS_WITHOUT_FOCUSErmöglicht Qt Virtual Keyboard, Tastenereignisse zu senden und die Umschalttaste zu verwenden, ohne dass eine Texteingabe im Fokus ist.

Diese Variable muss explizit in der Laufzeitumgebung einer Anwendung gesetzt werden, die davon profitieren möchte. Die Verwendung von qputenv() in der Anwendung selbst ist nicht ausreichend.

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