如何更改Qt 5.7虚拟键盘布局/语言环境

7
我正在使用Qt 5.7和qml编写一个小型Windows应用程序。在我的项目中,我需要能够更改虚拟键盘布局。但是,经过数小时的阅读文档和尝试各种方法后,我仍然无法实现它。
我的Qt安装是默认的Windows安装,并且已经更新(刚刚检查是否有更新)。
正如您在这里所看到的,键盘使用en_EN语言环境,尽管我的操作系统语言环境是fi_FI。同时请注意,语言更改按钮处于禁用状态。

enter image description here

我还尝试从键盘设置中列出可用的语言环境,并尝试通过键盘设置手动设置语言环境,但布局不会改变。以下是这些操作的代码:

InputPanel {
    id: keyboardPanel
    y: Qt.inputMethod.visible ? parent.height - keyboardPanel.height : parent.height
    anchors.left: parent.left
    anchors.right: parent.right
    Component.onCompleted: {
        console.log("locales available: " + VirtualKeyboardSettings.availableLocales)
        console.log("Locale before changing it: " + VirtualKeyboardSettings.locale)
        VirtualKeyboardSettings.locale = "fi_FI";
        console.log("Locale after changing it: " + VirtualKeyboardSettings.locale)
    }
}

运行该代码的结果是(键盘布局未更改):

qml: locales available: 
qml: Locale before changing it: 
qml: Locale after changing it: fi_FI

我可以使用自定义布局,但我不明白如何切换到自定义布局。任何帮助将不胜感激。

你是自己组装的键盘吗? - Mitch
不需要..它已经与Qt 5.7捆绑在一起了 http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html 我没有自己构建它。我知道预构建版本应该具有多个语言环境和布局。 - StefanR
默认语言环境不是en_EN(不存在这样的语言环境)。 en_GB是默认值。在Component.onCompleted: VirtualKeyboardSettings.locale = locale.name中,您可以将语言环境更改为ApplicationWindow或任何其他您想要的语言环境。 - Tomilov Anatoliy
由于键盘默认只使用en_GB进行编译,因此您不能像@Orient那样更改语言环境。是的,没有en_EN这样的语言环境,这是我的错误。 - StefanR
1个回答

5

目前虚拟键盘仅在构建时未指定语言时使用英语作为默认语言。这很快将会改变 - 可能在Qt 5.8中。在那之前,您可以在构建模块时使用lang-all配置选项。或者,您可以使用lang-<code>选项启用单个语言;该页面上有一个示例,提到您可以使用CONFIG+=lang-fi来选择芬兰语(键盘作者是芬兰人 :))。


非常感谢!我认为他们应该在文档中也提到这一点...或者是我错过了吗? - StefanR
在芬兰语示例下面写着:“如果没有指定其他语言,虚拟键盘会自动包含英语语言。”不过这并不是一个好的默认行为。 :) - Mitch
请问,如何启用lang-all配置选项? - Tor Klingberg
@TorKlingberg,就像你为lang-fi所做的那样:CONFIG+=lang-all - Mitch
不,我的意思是,我把它放在哪里? - Tor Klingberg
没错。你可以将其传递给qmake:qmake CONFIG+=lang-all qtvirtualkeyboard.pro。你也可以在Creator中的附加参数字段中设置它:http://doc.qt.io/qtcreator/creator-build-settings.html#qmake-build-steps - Mitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接