Qt - Quick控件配置文件(qtquickcontrols2.conf)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt - Quick控件配置文件(qtquickcontrols2.conf)相关的知识,希望对你有一定的参考价值。

参考技术A

Qt Quick Controls支持一个特殊的配置文件 qtquickcontrols2.conf ,该文件内置于应用程序的资源中。

配置文件可以指定首选样式和某些样式特定的属性。下面的示例指定首选样式为 Material样式 。此外,当应用程序以“材质”样式运行时,其主题为浅色,强调色和原色分别为蓝绿色和蓝灰色。但是,如果应用程序改用 通用样式 运行,则强调色为红色,并根据系统主题色选择适当的主题。

可以使用 QT_QUICK_CONTROLS_CONF 环境变量为配置文件指定自定义位置。

可以 Controls 在配置文件的一部分中指定以下值:

下表在配置文件的一部分中列出了可用于配置 Imagine样式 的值 Imagine :

例如,要指定存储在 资源系统 的目录的路径:

要指定本地目录的相对路径:

注意: 由于技术限制,如果路径相对于文件 qtquickcontrols2.conf ,则不应将其命名为 “ imagine” 。

下表在配置文件的一部分中列出了可用于配置 材料样式 的值 Material :

下表在配置文件的一部分中列出了可用于配置 通用样式的 值 Universal :

可以在配置文件中每个样式部分的子组中指定默认 字体 Font 。 Font 可以通过两种替代方式定义该子组:

支持的字体属性:

可以在配置文件中每个样式部分的子组中指定默认 调色板 Palette 。 Palette 可以通过两种替代方式定义该子组:

要么:

有关支持的属性的完整列表,请参见 调色板QML基本类型 。

为了使Qt Quick Controls可以找到配置文件,必须使用 The Qt Resource System 将其内置到应用程序的资源中。这是一个示例 .qrc 文件:

注意: Qt Quick Controls使用文件选择器来加载配置文件。可以为不同的平台和语言环境提供不同的配置文件。有关更多详细信息,请参见 QFileSelector 文档。

最后, .qrc 必须在应用程序的 .pro 文件中列出该文件,以便构建系统知道该文件。例如:

用于嵌入式设备的 Qt Quick 控件 2.0

【中文标题】用于嵌入式设备的 Qt Quick 控件 2.0【英文标题】:Qt Quick controls 2.0 for embedded device 【发布时间】:2017-06-08 09:15:38 【问题描述】:

我的长期目标是为嵌入式设备开发 HCI,我说的是嵌入式,而不是手机设备。

我已经在 Qt Widgets 上工作了一个月,出于某些原因避免使用 Qt Quick(我担心 QML 代码没有优化),但昨天我看了这个视频:Youtube 演讲者最后说:“如果你现在正在制作嵌入式产品,请使用 Qt Quick,尤其是现在在 5.8 中。没有理由不使用 Qt Quick”

但相反,他解释说,对于嵌入式设备,我们应该使用 c++ 代码,而不是 JavaScript。

我不太明白,这是否意味着我必须在 c++ 代码中创建所有对象并使用 Qt Quick 创建我的架构?

我真的不明白 Qt 想要我们做什么。只是沟通,因为他们不想优化旧的和稳定的 Qt 小部件,还是 Qt Quick 真的是嵌入式设备的解决方案?

我个人认为 Qt 不是嵌入式设备的解决方案,因为它们不断发展,不断变化的策略,而且似乎不知道自己将走向何方。

对于这个非算法问题,我深表歉意,并感谢您的所有回答。

【问题讨论】:

【参考方案1】:

我不能说出开发者的意图,也不能代表其他开发者。作为一名已经设计嵌入式设备 40 年的开发人员,我只能说我所理解的内容(对不起,我是个废话)。

C++ 还是 JavaScript?我觉得这个问题与你是否使用 QtQuick 没有太大关系。当然,您可以在 QML 代码中嵌入一些 JaveScript(有限制),但您也可以在相同的代码库中使用 C++(只是不嵌入在 QML 中)。然后是 Python。 Qt 和 QtQuick 都是编程框架,并且在某种程度上与语言无关。

我的观点是,QtQuick 是一种创建用户界面代码的良好、可移植的方式。在我目前的项目(多轴工业伺服控制系统)中,我使用 QML 作为用户界面(在需要的地方使用一点 JavaScript),C++ 用于大部分更高级别的处理(如网络控制和数据流) , C 和低级汇编语言(在 uC 和 DSP 中执行的那些例程)。在我看来,QML 和 C++ 很好地结合在一起。

【讨论】:

作为嵌入式设备的经验丰富的设计师,我猜你以前的一些应用程序 Flash 使用过?我尝试比较设计部分的两个“框架”(目前仅适用于此)。由于我对 Qt 的专家评估(非常)低,您的评论鼓励我在研究中走得更远。谢谢 我以前没有使用过 Flash 作为用户界面,因为我从未使用过 HTTP 进行通信。直到 90 年代,用户界面只是简单的按钮,有时是基于字符的 LCD。然后,由于需要更复杂的 UI,我添加了可编程终端或将 C# 与 Visual Studio 结合使用。过去几年我一直在使用 Qt。【参考方案2】:

我相信演讲者的想法是,您的大部分业务逻辑(如果不是全部)都应该使用 C++ 模型后端来完成。但是,可以使用嵌入的 JavaScript 在 QML 中完成所有逻辑,因为 JS 是一种解释性语言,它在运行时的性能可能低于编译的 C++ 代码(取决于 C++ 的编写情况)。

基本上您只想使用 JS 来操作图形组件,同时使用带有 QObject 模型的 C++ 来更新 QtQuick 元素的各个属性。

Qt Quick Best Practices wiki 中提到了这一点, https://wiki.qt.io/Qt_Quick_Best_Practices

【讨论】:

以上是关于Qt - Quick控件配置文件(qtquickcontrols2.conf)的主要内容,如果未能解决你的问题,请参考以下文章

Qt Quick——QML基础:自定义控件

Qt 5 (Qt Quick) MenuItem 大部分时间显示为空白

如何设置Qt Quick Controls2的风格

用于嵌入式设备的 Qt Quick 控件 2.0

✿4-The Basics-Qt Quick and QML

✿4-The Basics-Qt Quick and QML