首页 > 解决方案 > 将项目 .ui 文件(表单)更改为 .qml 和 .ui.qml 文件

问题描述

我有一个带有 .ui 表单的 qt 项目。

但现在我必须获得更好的视觉效果(更现代和用户友好),所以我发现 qml 在某种程度上是我需要的东西。

所以问题是整个项目是基于 .ui 表单(前端)和 cpp 代码(后端)。我需要找到一种方法来使用 qml 文件更改我的表单。

我搜索了一下,但我不知道如何真正在 qml 中像在 ui 表单中那样轻松地使用 ui 组件。

一些帮助将受到欢迎

标签: qtqml

解决方案


作为前言,不要低估重新实现应用程序 UI 所需的工作量。

然后,我会这样进行,并在过渡期间始终拥有一个工作软件:

  1. 学习 QML。特别注意如何在 C++ 和 QML 之间共享数据(主要使用 Qt 元对象系统和 Qt 的模型视图框架)。暂时不要对当前应用程序进行任何永久性更改(要么从头开始学习/PoC 程序,要么制作当前代码的一次性分支)。

  2. 使用您在上面学到的关于 C++-QML 互操作性的知识,修改当前的纯 C++ 代码以更多地解耦 GUI 和业务逻辑(如果需要,但我假设是这样)。专注于使业务逻辑分离,只需最少的 GUI 代码更改(因为这些最终会被丢弃)。

  3. 在 QQuickView 小部件中将当前 GUI 的某些部分转换为 QML。暂时保留基于小部件的整体 GUI 结构,但目标是使这些 QML UI 尽可能最终化。尽可能地进行这种转换,使程序保持完整的功能。此外,这一步是从 UI 分离业务逻辑的第 2 步的延续,但现在您可以使用实际的 QML,因此您会发现必须更改的新内容。

  4. 如果把它全部变成 QML 是可行的,那么做最后的推动并完全摆脱小部件。如果 UI 的某些部分无法在 QML 中重写,那么只需通过转换您想要转换的所有内容来完成第 3 步。


推荐阅读