qt - 将项目 .ui 文件(表单)更改为 .qml 和 .ui.qml 文件
问题描述
我有一个带有 .ui 表单的 qt 项目。
但现在我必须获得更好的视觉效果(更现代和用户友好),所以我发现 qml 在某种程度上是我需要的东西。
所以问题是整个项目是基于 .ui 表单(前端)和 cpp 代码(后端)。我需要找到一种方法来使用 qml 文件更改我的表单。
我搜索了一下,但我不知道如何真正在 qml 中像在 ui 表单中那样轻松地使用 ui 组件。
一些帮助将受到欢迎
解决方案
作为前言,不要低估重新实现应用程序 UI 所需的工作量。
然后,我会这样进行,并在过渡期间始终拥有一个工作软件:
学习 QML。特别注意如何在 C++ 和 QML 之间共享数据(主要使用 Qt 元对象系统和 Qt 的模型视图框架)。暂时不要对当前应用程序进行任何永久性更改(要么从头开始学习/PoC 程序,要么制作当前代码的一次性分支)。
使用您在上面学到的关于 C++-QML 互操作性的知识,修改当前的纯 C++ 代码以更多地解耦 GUI 和业务逻辑(如果需要,但我假设是这样)。专注于使业务逻辑分离,只需最少的 GUI 代码更改(因为这些最终会被丢弃)。
在 QQuickView 小部件中将当前 GUI 的某些部分转换为 QML。暂时保留基于小部件的整体 GUI 结构,但目标是使这些 QML UI 尽可能最终化。尽可能地进行这种转换,使程序保持完整的功能。此外,这一步是从 UI 分离业务逻辑的第 2 步的延续,但现在您可以使用实际的 QML,因此您会发现必须更改的新内容。
如果把它全部变成 QML 是可行的,那么做最后的推动并完全摆脱小部件。如果 UI 的某些部分无法在 QML 中重写,那么只需通过转换您想要转换的所有内容来完成第 3 步。