Qt5.13.0虚拟键盘 使用文档说明及函数说明 (二)部署指南 deployment-guide

 bb的地方:刷了一下题,突然发现忘了字符串结束符是啥了,就写了 ‘’ ,噢mygod ,搜了才看见是‘\0’  .发现自己越来越糟了。之前因为换qt系统到最后连内核编译配置全套都要自己慢慢弄了,哎,单单一个make menuconfigure感觉就要看个半天


本文档主要描述了如何在Qt 5应用程序中部署和使用Qt虚拟键盘插件(多在QML中),以及一些环境变量的设置


其他相关说明链接:

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (三)手写支持 Handwriting

使用文档说明及函数说明 (四)技术指南 Technicaly-Guide


目录

部署指南

部署位置

集成方法(Integration Method)

Using Qt Virtual Keyboard with Qt Wayland

加载插件

创建 InputPanel

环境变量


部署指南

deployment-guide.qdoc

搜索:Deployment Guide

部署位置

各种Qt虚拟键盘插件和文件被部署在以下位置:

项目 item 桌面安装位置 Boot2Qt安装位置

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虚拟键盘目前支持两种可选的集成方法来使用插件:

 Desktop:不需要更改现有的应用程序。
        虚拟键盘可用于系统中的所有Qt 5应用程序。
        在这种集成方法中,键盘显示在专用的顶级窗口(top-level window)中。


 Application:虚拟键盘通过在QML中实例化一个 InputPanel项嵌入到Qt应用程序本身中。
        此方法是强制性的(mandatory in environments),且不支持多个顶级窗口(如嵌入式设备),但也可以用于Deskop应用程序。
        这个方法也可以被Qt的Wayland组合器用来提供一个服务器端虚拟键盘。有关详细信息,请参阅下面的部分。

集成方法由项目文件自动选择,如分为xcb(x11)以及其他。

 switch (d->windowingSystem) {
        case DesktopInputPanelPrivate::Xcb:
            d->view->setFlags(d->view->flags() | Qt::Window | Qt::BypassWindowManagerHint);
            break;
        default:
            d->view->setFlags(d->view->flags() | Qt::Tool);
            break;
}

但是,在桌面环境中,可以通过将 CONFIG+=disable-desktop添加到 qmake命令行来覆盖desktop集成方法并使用application集成方法。
 

Using Qt Virtual Keyboard with Qt Wayland

本节解释如何使用Qt虚拟键盘与Qt窗口小部件行编辑示例交互,使用纯QML示例作为组合器。

 

我们将使用Ubuntu 18.04运行这个例子,使用X11作为窗口系统。示例组合程序(pure-qml)将在X11会话中作为窗口打开。

  (pure-qml该示例在qt里面找不到,想看源码的可以点https://code.qt.io/cgit/qt/qtwayland.git/tree/examples/wayland/pure-qml?h=5.13.0 都是QWayland的示例)
1、开始 compositor:

QT_XCB_GL_INTEGRATION=xcb_egl

QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl

QT_IM_MODULE=qtvirtualkeyboard 

./pure-qml -platform xcb

2、在运行客户端程序时,确保 QT_IM_MODULE 取消设置

unset QT_IM_MODULE

3、打开 Line Edits example 作为客户端

./lineedits -platform wayland

4、点击 line edit 然后虚拟键盘会打开

如果遇到问题,可以设置以下环境变量

当运行compositor 可以得到调试输出帮助诊断问题:

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

加载插件

在这两种集成方法中,应用程序必须使用QT_IM_MODULE
1、加载插件的环境变量。例如:

$ QT_IM_MODULE=qtvirtualkeyboard myapp

2、或者在 main() 函数:

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

在desktop集成方法中,这一步就是所需的全部。自带两种风格,默认是第一种炫酷科技(嘻嘻),第二种复古?(黄金shit)

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (二)部署指南 deployment-guide_第1张图片 默认样式
Qt5.13.0虚拟键盘 使用文档说明及函数说明 (二)部署指南 deployment-guide_第2张图片 retro样式


在application集成方法中,应用程序需要创建InputPanel的实例,下面将对此进行说明。

创建 InputPanel

下面的示例展示了如何创建InputPanel,以及如何使用应用程序容器划分屏幕区域。

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

InputPanel必须是应用程序容器旁边的兄弟元素。
重要的是不要将InputPanel放在应用程序容器中,因为它会与应用程序的内容重叠。


此外,InputPanel高度将根据可用宽度自动更新;InputPanel的长宽比是恒定的。

环境变量

模块定义了如下几个环境变量:

QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATH

重写Hunspell数据文件的位置。

默认位置取决于{QLibraryInfo::location(QLibraryInfo::DataPath)}的值。
            例如,对于从源代码构建的Qt库,它可以是 {qtbase/qtvirtualkeyboard/hunspell}。
            有关更多信息,请参见{Hunspell Integration}。

QT_VIRTUALKEYBOARD_PINYIN_DICTIONARY

重写拼音字典的位置。

 默认情况下,字典被绑定到插件的资源中。
            要禁用资源绑定,可以在插件的qmake命令行中添加 CONFIG+=no-bundle-pinyin。在这个场景中,默认位置取决于{QLibraryInfo::location(QLibraryInfo::DataPath)}的值。
            例如,对于从源代码构建的Qt库,它可以是 {qtbase/qtvirtualkeyboard/pinyin/ dict_pinyin.dat}。
 

QT_VIRTUALKEYBOARD_CANGJIE_DICTIONARY

重写仓颉字典的位置。

默认情况下,字典被绑定到插件的资源中。
            要禁用资源绑定,请在插件的qmake命令行中添加 CONFIG+=no-bundle-tcime。在这个场景中,默认位置取决于{QLibraryInfo::location(QLibraryInfo::DataPath)}的值。
            例如,对于从源代码构建的Qt库,它可以是 {qtbase/qtvirtualkeyboard/tcime/ dict_cangje .dat}。

QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY

重写了Zhuyin字典的位置。

默认情况下,字典被绑定到插件的资源中。
            要禁用资源绑定,请在插件的qmake命令行中添加 CONFIG+=no-bundle-tcime。在这个场景中,默认位置取决于 {QLibraryInfo::location(QLibraryInfo::DataPath)}的值。
            例如,对于从源代码构建的Qt库,它可以是 {qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat}。

QT_VIRTUALKEYBOARD_PHRASE_DICTIONARY
         重写短语字典的位置。

            默认情况下,字典被绑定到插件的资源中。
要禁用资源绑定,请在插件的qmake命令行中添加\ CONFIG+=no-bundle-tcime。在这个场景中,默认位置取决于\c {QLibraryInfo::location(QLibraryInfo::DataPath)}的值。例如,对于从源代码构建的Qt库,它可以是\c {qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat}。

QT_VIRTUALKEYBOARD_STYLE
        指定要与虚拟键盘一起使用的样式的位置。

            也可以在QML中通过设置 {VirtualKeyboardSettings::styleName}来指定,或者在构建时通过使用{Advanced Configuration Options}{qmake Configuration Options}来指定。

QT_VIRTUALKEYBOARD_LAYOUT_PATH
         指定与虚拟键盘一起使用的布局的位置。
         LIPI_ROOT
         指定lipi-toolkit的位置。

           默认位置取决于{QLibraryInfo::location(QLibraryInfo::DataPath)}的值。
            例如,对于从源代码构建的Qt库,它可以是 {qtbase/qtvirtualkeyboard/lipi_toolkit}。

LIPI_LIB
         指定lipi-toolkit插件的位置。

            默认位置取决于 LIPI_ROOT:
             {LIPI_ROOT + "/lib"} if  LIPI_ROOT is set.
            {QLibraryInfo::location(QLibraryInfo::PluginsPath) + "/lipi_toolkit"} if LIPI_ROOT is not set.

你可能感兴趣的:(Qt,虚拟键盘,qt)