QML 虚拟键盘添加新布局



我在 Yocto 项目上使用 qt qml 5.7 来制作树莓派。我的项目需要土耳其语的虚拟键盘。QT虚拟键盘不支持土耳其语,所以我想创建自定义布局。我从这里添加我的项目示例布局代码作为名称"myCustomLayout.qml"。

我按照以下代码运行我的虚拟键盘显示功能。

import QtQuick 2.5
import QtQuick.VirtualKeyboard 2.1
import QtQuick.Controls 2.0
InputPanel {
id: inputPanel
visible:  Qt.inputMethod.visible
height:main.height/4
y:main.height - height
x:main.width/8
width: main.width*6/8
focus: true
}

当我运行虚拟键盘显示功能时,出现的键盘不是我的自定义布局,它仍然是常规的英文键盘布局。如何在我的应用中添加我的自定义键盘布局?

如果您使用的是5.9之前的Qt版本,我认为您必须修补Qt虚拟键盘以添加自定义布局,然后重建它。通过添加自己的条目来修改此文件就足够了。例如:

contains(CONFIG, lang-tr.*) {
LAYOUT_FILES += 
content/layouts/tr_TR/main.qml
}

如果您使用的是 Qt 5.9 或更高版本,则可以将QT_VIRTUALKEYBOARD_LAYOUT_PATH环境变量设置为自定义样式的路径,如下所述:

虚拟键盘布局系统支持内置布局以及自定义布局。内置布局作为Qt资源嵌入到插件二进制文件中。自定义布局位于文件系统中,因此可以在不重新编译虚拟键盘本身的情况下安装它们,也可以位于资源文件中。

运行时布局的选择受QT_VIRTUALKEYBOARD_LAYOUT_PATH环境变量的影响。

如果未设置环境变量或包含无效目录,虚拟键盘将回退到默认的内置布局。

要防止在使用自定义布局时将内置布局内置到虚拟键盘插件中,请将禁用布局添加到 CONFIG qmake 变量中。有关详细信息,请参阅高级配置选项。

为了从模块的源代码中获取示例,此测试将其设置为"/data/layouts"

再举一个例子,假设您的应用程序具有以下目录结构:

C:devtempuntitled
│   main.cpp
│   main.qml
│   resources.qrc
│   untitled.pro
│
└───en_GB
dialpad.qml
digits.qml
handwriting.qml
main.qml
numbers.qml
symbols.qml

您可以将其设置为C:devtempuntitled。它希望看到一个或多个文件夹,每个文件夹都以其布局所代表的语言 + 国家/地区代码命名,如下所示。

要验证它是否正常工作,您可以将上面的链接中的en_GB布局复制到您的项目中并对其进行修改(我将"Q"键更改为"Z"(。

我在计算机(不是pi(的yocto构建路径中找到了qtvirtualkeyboard文件。

/

build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/qtvirtualkeyboard/5.7.0+gitAUTOINC+626e78c966-r0/git/

我通过在内容/布局路径中复制文件en_GB创建了一个新的tr_TR布局文件。我更改了我的tr_TR main.qml 文件。我已经修改了 virtualkeyboard.pro 文件,就像米奇的答案一样,添加了以下行。

contains(CONFIG, lang-tr.*) {
LAYOUT_FILES += 
content/layouts/tr_TR/main.qml
}

我也修改了config.pri文件。我更改了以下行:

# Default language
!contains(CONFIG, lang-.*) {
contains(QT_CONFIG, private_tests) { # CI or developer build, use all languages
CONFIG += lang-all
} else {
CONFIG += lang-tr_TR
}
}
# Flag for activating all languages
lang-all: CONFIG += 
#    lang-ar_AR 
#    lang-da_DK 
#    lang-de_DE 
lang-en_GB 
#    lang-es_ES 
#    lang-fa_FA 
#    lang-fi_FI 
#    lang-fr_FR 
#    lang-hi_IN 
#    lang-it_IT 
#    lang-ja_JP 
#    lang-ko_KR 
#    lang-nb_NO 
#    lang-pl_PL 
#    lang-pt_PT 
#    lang-ru_RU 
#    lang-sv_SE 
lang-tr_TR 
#    lang-zh_CN 
#    lang-zh_TW

我将更改后的 git 文件复制到 U 盘并在 pi 上打开了我的文件。我用以下方法重建了 qtvirtualkeyboard:

qmake "CONFIG+=lang-all" qtvirtualkeyboard.pro
make
make install

最后,我可以使用我的自定义布局。

最新更新