QML和C++之间的适当配置

Suitable disposition between QML and C++

本文关键字:配置 之间 C++ QML      更新时间:2023-10-16

我正在使用QML/C++用Qt 5和MVC构建一个自定义UI,我想知道如何根据在C++中放什么和在QML中放什么来构建代码。纯可视化的部分(视图)显然会放在QML中,数据(模型)放在C++中,但那些不太清楚的部分呢?我应该倾向于将东西放在C++中,并尝试在一定程度上减少QML代码,还是最好倾向于另一个方向,即增加QML代码并减少C++部分?我与Qt/QML的合作还不够,无法知道什么是最好的方法。

这两个部分都是完全可行的imho,但如果我之后需要更改这一点,那将需要付出很多努力,因此我希望在开始创建大量代码之前,至少在一定程度上做好这一点。

在设计QtQuick界面时,您在这方面有什么经验?您设计的组件主要是在C++中,顶部有一个瘦QML接口,还是相反?每种解决方案的优缺点是什么?在QtQuick中设计UI时,构建代码的首选方式是什么?

这是我的两美分。这适用于Qt版本5.1(ish)

QML是为实现UI而设计的。所以我设计了那些在QML中进行可视化实现的部分。有些UI元素在Javascript中做不好,所以我在C++中做"助手"或视图。

我正在使用模型/视图进行数据显示。所有的模型都是用C++实现的(我在上一个应用程序中使用了sqlite数据库)。

QML仍在进行中,所以如果你偏离标准电话接口太远,就没有太多实现。您期望的桌面用户界面行为的标准根本不存在。

祝你好运!

理想情况下,用c++制作模型和控制器。对视图使用QML。在QML视图中,您可以很容易地合并用C++编写的组件(有一个插件系统和一个API,用于可视化和非可视化C++组件,以便在QML中很好地集成)

在Qt 5.1+中,QML的性能在UI渲染方面有了很大的改进,但您应该限制在javascript中(在QML内部)执行的逻辑量。

QML擅长的是声明UI的外观以及它应该如何连接到控制器的信号和插槽,如果你最终在QML文件中写入了复杂的逻辑,那么你可能做错了什么。

附言:有几个大型开源项目使用QML,你可以在github上找到它们。你可以用它们作为风格指南。