IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Deployment Guide

Qt Virtual Keyboard.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Deployment Guide

<Unknown command>contentspage{Deployment Guide} {Contents}

Overview

This document describes how to deploy and use the Qt Virtual Keyboard plugin with Qt 5 applications.

Deployment

The various Qt Virtual Keyboard plugins and files are deployed in the following locations:

Item

Desktop install path

Boot2Qt install path

qtvirtualkeyboardplugin

$$[QT_INSTALL_PLUGINS]/platforminputcontexts

/system/plugins/platforminputcontexts

qtvirtualkeyboardextensionplugin

$$[QT_INSTALL_PLUGINS]/virtualkeyboard

/system/plugins/virtualkeyboard

qtvirtualkeyboardplugin QML files

$$[QT_INSTALL_QML]/QtQuick/VirtualKeyboard

/system/qml/QtQuick/VirtualKeyboard

qtvirtualkeyboardstylesplugin

$$[QT_INSTALL_QML]/QtQuick/VirtualKeyboard/Styles

/system/qml/QtQuick/VirtualKeyboard/Styles

Integration Method

Qt Virtual Keyboard currently supports two alternative integration methods for using the plugin:

  • Desktop: requires no changes to existing applications. The virtual keyboard is available to all of the Qt 5 applications in the system.

    In this integration method, the keyboard is shown in a dedicated top-level window.

  • Application: the virtual keyboard is embedded within the Qt application itself by instantiating an InputPanel item in QML.

    This method is mandatory in environments where there is no support for multiple top-level windows (such as embedded devices), but can be used in desktop applications too.

    This method can also be used by Qt Wayland compositors in order to provide a server-side virtual keyboard. See the section below for details.

The integration method is automatically selected by the project files. However, in desktop environments, it is possible to override the desktop integration method and use the application integration method instead, by adding CONFIG+=disable-desktop to the qmake command line.

Using Qt Virtual Keyboard with Qt Wayland

This section explains how to use Qt Virtual Keyboard to interact with the Qt Widgets Line Edits example using the Pure QML example as a compositor.

We will be using Ubuntu 18.04 to run the example, using the X11 as the windowing system. The example compositor (pure-qml) will open as a window within an X11 session.

  1. Start the compositor:

     
    Sélectionnez
    QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl QT_IM_MODULE=qtvirtualkeyboard ./pure-qml -platform xcb
  2. Before running the client application, ensure that QT_IM_MODULE is unset:

     
    Sélectionnez
    unset QT_IM_MODULE
  3. Start the Line Edits example as the client:

     
    Sélectionnez
    ./lineedits -platform wayland
  4. Click on a line edit and Qt Virtual Keyboard's input panel will open.

If issues are encountered, the following environment variables can be set when running the compositor to get debug output that can help diagnose the issue:

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

Loading the Plugin

In both integration methods, the application must use the QT_IM_MODULE environment variable to load the plugin. For example:

 
Sélectionnez
$ QT_IM_MODULE=qtvirtualkeyboard myapp

or in the main() function:

 
Sélectionnez
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

In the desktop integration method, this step is all that is required to use Qt Virtual Keyboard. In the application integration method, the application is required to create an instance of InputPanel as explained in the following chapter.

Creating InputPanel

The following example shows how to create an InputPanel and how to divide the screen area with the application container.

 
Sélectionnez
import QtQuick 2.0
import QtQuick.VirtualKeyboard 2.1

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

The input panel must be a sibling element next to the application container. It is important not to put the input panel within the application container, as it would then overlap with the contents of the application. Also, the input panel height will be automatically updated according to the available width; the aspect ratio of the input panel is constant.

Environment Variables

There are several environment variables defined by the module that are listed below:

Variable

Purpose

QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATH

Overrides the location of the Hunspell data files.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/hunspell.

See Hunspell Integration for more information.

QT_VIRTUALKEYBOARD_PINYIN_DICTIONARY

Overrides the location of the Pinyin dictionary.

By default, the dictionary is bundled into the plugin's resources.

To disable resource bundling, add CONFIG+=no-bundle-pinyin in the plugin's qmake command line. In this scenario, the default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/pinyin/dict_pinyin.dat.

QT_VIRTUALKEYBOARD_CANGJIE_DICTIONARY

Overrides the location of the Cangjie dictionary.

By default, the dictionary is bundled into the plugin's resources.

To disable resource bundling, add CONFIG+=no-bundle-tcime in the plugin's qmake command line. In this scenario, the default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_cangjie.dat.

QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY

Overrides the location of the Zhuyin dictionary.

By default, the dictionary is bundled into the plugin's resources.

To disable resource bundling, add CONFIG+=no-bundle-tcime in the plugin's qmake command line. In this scenario, the default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat.

QT_VIRTUALKEYBOARD_PHRASE_DICTIONARY

Overrides the location of the phrase dictionary.

By default, the dictionary is bundled into the plugin's resources.

To disable resource bundling, add CONFIG+=no-bundle-tcime in the plugin's qmake command line. In this scenario, the default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat.

QT_VIRTUALKEYBOARD_STYLE

Specifies the location of the style to use with the virtual keyboard.

This can also be specified in QML by setting VirtualKeyboardSettings::styleName, or at build time by using the qmake configuration options.

QT_VIRTUALKEYBOARD_LAYOUT_PATH

Specifies the location of the layouts to be used with the virtual keyboard.

LIPI_ROOT

Specifies the location of lipi-toolkit.

The default location depends on the value of QLibraryInfo::location(QLibraryInfo::DataPath). For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/lipi_toolkit.

LIPI_LIB

Specifies the location of lipi-toolkit plugins.

The default location depends on LIPI_ROOT:

  • LIPI_ROOT + "/lib" if LIPI_ROOT is set.

  • QLibraryInfo::location(QLibraryInfo::PluginsPath) + "/lipi_toolkit" if LIPI_ROOT is not set.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+