Qt 虚拟键盘自定义样式

Posted

技术标签:

【中文标题】Qt 虚拟键盘自定义样式【英文标题】:Qt Virtual Keyboard Custom Style 【发布时间】:2018-02-02 23:01:29 【问题描述】:

我需要在小屏幕上为 Qt VirtualKeyboard 构建自定义样式,以最大限度地提高其可读性。我已经在我的项目中构建了一个自定义布局,并且使用 QT_VIRTUALKEYBOARD_LAYOUT_PATH 效果很好。

我遇到的问题是 documentation 声明自定义样式必须放在 Qt 目录中。但是,我需要这种风格是可移植的,因此将这种新构建的风格存储在我的本地机器上而不是项目本身中是不可接受的。

有没有办法在项目中构建使用键盘样式?

【问题讨论】:

【参考方案1】:

它不必在 Qt 目录中,只需在 QtQuick/VirtualKeyboard/Styles/ 下的目录和 QML 导入路径中即可。

以自动测试为例:

http://code.qt.io/cgit/qt/qtvirtualkeyboard.git/tree/tests/auto/styles/data

您也可以将样式放在该文件夹结构下的 .qrc 文件中:

http://code.qt.io/cgit/qt/qtvirtualkeyboard.git/tree/src/virtualkeyboard/virtualkeyboardsettings.cpp#n70

我已经创建了一个任务来更清楚地说明这一点:https://bugreports.qt.io/browse/QTBUG-66172

【讨论】:

嗨米奇,感谢您的回复。这似乎与文档所述的解决方案相同。我遇到的问题是它不是一个可移植的解决方案,我可以将其推送到我的存储库,因为新样式位于我计算机上的 Qt 安装中,然后在编译时将其导入。我需要让新风格成为项目本身的一部分。例如,要放置一个新布局,我使用:qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", ":/embres/components/layouts"); 这是在我的 main.cpp 中完成的,并在我的项目中放置一个包含我的新布局的文件夹的路径。 我链接到的自动测试完成了您正在尝试做的事情(在项目本身中具有样式),除了它在文件系统上而不是在资源系统上。 谢谢米奇,我搞定了。它的工作方式类似于使用 qputenv("QML2_IMPORT_PATH", folder contains structure QtQuick\VirtualKeyboard\Styles\name of style) 的键盘布局;在我的 main.cpp 中。

以上是关于Qt 虚拟键盘自定义样式的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中自定义小部件的自定义样式

[Qt]自定义QStyle——实现QProgressBar自定义样式

自定义小部件的 Qt 样式表

qt自定义控件样式在提升使用中不生效之坑

Qt 自定义 滚动条 样式

Qt实现自定义窗口样式