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

Suitable disposition between QML and C++

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

恕我直言,这两个部分都是完全可行的,但是如果我之后需要更改它会花费很多精力,因此我希望在开始创建大量代码之前至少在某种程度上正确处理它。

您在设计QtQuick界面时有哪些这方面的经验?您是主要使用 C++ 设计组件,顶部有一个薄的 QML 接口还是相反?每个解决方案的 pros/cons 是多少?在 QtQuick 中设计 UI 时,结构代码的首选方式是什么?

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

QML 旨在实现 UI。所以我设计了那些在 QML 中进行可视化实现的部分。有些 UI 元素在 Javascript 中不能很好地完成,所以我在 C++ 中 "helpers" 或视图。

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

QML 仍在进行中,因此如果您偏离标准电话接口太远,则不会有太多实现。您期望从台式机获得的 UI 行为标准根本不存在。

祝你好运!

最好用 C++ 制作模型和控制器。将 QML 用于视图。 在 QML 视图中,您可以相当轻松地合并用 C++ 编写的组件(有一个插件系统和一个 API 用于可视化和非可视化 C++ 组件,以便在 QML 中很好地集成)

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

QML 擅长的是声明 UI 的外观以及它应该如何连接到控制器的信号和插槽,如果您最终在 qml 文件中编写复杂的逻辑,您可能正在做有问题。

PS: 有几个使用QML的大型开源项目,你可以在github上找到它们。您可以将它们用作样式指南。