我在Yocto项目中使用qt qml 5.7 for raspberry pi。我的项目需要土耳其语的虚拟键盘。 QT虚拟键盘has no support Turkish language所以我想创建我的自定义布局。我将here中的项目示例布局代码添加为名称“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
}
当我运行虚拟键盘显示功能时,出现的键盘不是我的自定义布局,它仍然是常规的英文键盘布局。如何在我的应用程序中添加自定义键盘布局?
答案 0 :(得分:2)
如果您使用的是早于5.9的Qt版本,我认为您必须修补Qt虚拟键盘以添加自定义布局,然后重建它。通过添加自己的条目来修改this文件就足够了。例如:
contains(CONFIG, lang-tr.*) {
LAYOUT_FILES += \
content/layouts/tr_TR/main.qml
}
如果您使用的是Qt 5.9或更高版本,则可以将QT_VIRTUALKEYBOARD_LAYOUT_PATH
环境变量设置为自定义样式的路径,如上所述here:
虚拟键盘布局系统支持内置布局和自定义布局。内置布局作为Qt资源嵌入到插件二进制文件中。自定义布局位于文件系统中,因此可以在不重新编译虚拟键盘本身的情况下安装它们,也可以将它们放在资源文件中。
运行时布局的选择受
QT_VIRTUALKEYBOARD_LAYOUT_PATH
环境变量的影响。如果未设置环境变量或包含无效目录,则虚拟键盘将回退到默认的内置布局。
要防止在使用自定义布局时将内置布局内置到虚拟键盘插件中,请将disable-layouts添加到CONFIG qmake变量中。有关更多信息,请参阅高级配置选项。
要从模块的源代码中获取示例,this test将其设置为"/data/layouts"
。
作为另一个例子,假设您的应用程序具有以下目录结构:
C:\dev\temp\untitled
│ main.cpp
│ main.qml
│ resources.qrc
│ untitled.pro
│
└───en_GB
dialpad.qml
digits.qml
handwriting.qml
main.qml
numbers.qml
symbols.qml
您可以将其设置为C:\dev\temp\untitled
。它希望看到一个或多个文件夹,每个文件夹以其布局所代表的语言+国家/地区代码命名,如here所示。
要验证它是否有效,您可以将en_GB
布局从上面的链接复制到项目中并进行修改(我将'Q'键更改为'Z')。
答案 1 :(得分:0)
我在yocto中发现qtvirtualkeyboard文件在我的计算机中构建路径(而不是pi)。
/build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/qtvirtualkeyboard/5.7.0+gitAUTOINC+626e78c966-r0/git /
我通过在content / layouts路径中复制en_GB文件创建了一个新的tr_TR布局文件。我改变了我的tr_TR main.qml文件。我已经修改了virtualkeyboard.pro文件,就像Mitch的回答一样,添加以下几行。
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文件复制到USB记忆棒并在pi上打开了我的文件。我用:
重建了qtvirtualkeyboardqmake "CONFIG+=lang-all" qtvirtualkeyboard.pro
make
make install
最后我可以使用自定义布局。