首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QML虚拟键盘添加新布局

QML虚拟键盘添加新布局
EN

Stack Overflow用户
提问于 2017-07-11 11:27:23
回答 2查看 4.4K关注 0票数 1

我在Yocto项目中使用了qtQML5.7作为raspberry pi。我的项目需要土耳其语的虚拟键盘。不支持土耳其语,所以我想创建我的自定义布局。我将来自这里的项目示例布局代码添加为"myCustomLayout.qml“。

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

代码语言:javascript
运行
复制
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
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 13:03:39

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

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

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

代码语言:javascript
运行
复制
contains(CONFIG, lang-tr.*) {
    LAYOUT_FILES += \
        content/layouts/tr_TR/main.qml
}

另外,我修改了config.pri文件。我修改了以下几行:

代码语言:javascript
运行
复制
# 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上打开我的文件。我用以下方法重新构建了qtvirtual键盘:

代码语言:javascript
运行
复制
qmake "CONFIG+=lang-all" qtvirtualkeyboard.pro
make
make install

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

票数 0
EN

Stack Overflow用户

发布于 2017-07-11 14:17:09

如果您使用的Qt版本早于5.9,我认为您必须修补来添加您的自定义布局,然后重新构建它。应该可以通过添加自己的条目来修改文件。例如:

代码语言:javascript
运行
复制
contains(CONFIG, lang-tr.*) {
    LAYOUT_FILES += \
        content/layouts/tr_TR/main.qml
}

如果使用QT5.9或更高版本,可以将QT_VIRTUALKEYBOARD_LAYOUT_PATH环境变量设置为自定义样式的路径,如前面提到的这里

虚拟键盘布局系统支持内置布局和自定义布局。内置布局作为Qt参考资料嵌入到插件二进制文件中。自定义布局位于文件系统中,因此可以在不重新编译虚拟键盘本身的情况下安装它们,也可以将它们定位在资源文件中。 运行时布局的选择受QT_VIRTUALKEYBOARD_LAYOUT_PATH 环境变量.的影响。 如果环境变量未设置,或包含无效目录,则虚拟键盘返回到默认内置布局。 若要防止内置布局在使用自定义布局时内置到虚拟键盘插件中,请将禁用布局添加到CONFIG qmake变量中。有关更多信息,请参见高级配置选项。

为了从模块的源代码中获得一个例子,这个测试将其设置为"/data/layouts"

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

代码语言:javascript
运行
复制
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。它希望看到一个或多个文件夹,每个文件夹都以其布局所代表的语言+国家代码命名,如所见的这里

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45033267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档