qt - 这是一个不好的做法吗 : embed QML in a QT dockable widgets application?

标签 qt qml

QT 小部件在 UI 开发方面非常耗时,我的 CSS 表已经有 3000 行代码,进行 UI 更改非常耗时。我的应用程序在性能方面要求非常高,我正在考虑将小部件嵌入到 QML 中,以便更轻松、更快地控制 UI,但我真的很担心性能,是否值得尝试,还是只是不好的做法?

最佳答案

My application is very demanding in terms of performance, I was thinking of embedding the widgets into QML to have easier and faster control of the UI but I'm really worried about performance, will worth the try or it is just bad practice?

从 Qt 5.1 开始,我们可以轻松地将 QML View 嵌入到 Qt Widget 容器中。前段时间偶然发现了一个博客:Combining Qt Widgets and QML with QWidget::createWindowContainer() .

说到性能,不确定您的应用程序需要什么样的性能?总体而言,QML 通过 OpenGL 渲染到屏幕或速度非常快。另一方面,使用 QML 时,您经常需要处理 JavaScript,这当然无法与 C++ 相比。有Qt Quick Compiler不过,引入了商业 Qt。

对于基于 QWidget 的 UI 与 QML:讨论可以被视为表达意见等。那么一些考虑点:

  • 开发和维护一种 UI(无论是基于小部件还是基于 QML)都更容易。
  • 混合 UI 是可能的,但了解您可以从中获得什么是有意义的。
  • 大多数桌面应用仅对小部件完全满意。
  • 当应用也应该移植到移动平台时,QML 更有意义。
  • 当应用需要依赖“触摸”时,QML 也比小部件更有利。

the QT widget is very time consuming in terms of UI development, my CSS sheets has 3000 lines of code already and it is very time consuming to do UI changes.

嗯...风格非常重的基于小部件的应用程序?我只能确定这两个概念:小部件和 QML 非常不同,但小部件样式表和 QML 都是声明性语言,尽管不同。我还确信任何严肃的应用程序都需要更多的 C++,而对于 QML,我们需要花时间将 C++ 代码与 QML 联系起来。

QML 应用程序的分发也可能比纯粹基于小部件的更复杂:例如,您需要自定义 Qt 构建以支持针对某些虚拟机和平台模拟的 OpenGL:这是一个有趣的主题。此外,对于您使用的 Qt Quick 小部件,应该将它们放入随应用程序分发的资源中,或者您需要 Qt Quick Compiler。如果您使用它,请确保所有 QML 代码都是由它编译的,并且应用程序的任何部分仍然使用资源中缺少的“脚本化”QML。我在我们的应用程序中使用了 Qt 5.5 Quick Compiler,不仅发现了很多错误,而且仍然需要从框架中拖动某些 Qt Quick 文件以及应用程序安装包。对于标准动态链接和 windeployqt 来说,这并没有那么糟糕。工具。但是一个严肃的应用程序通常需要与其所有依赖项静态链接,然后我们就不能使用 windeployqt工具。

总体而言,Qt 正在从小部件转向 QML,但我们能获得什么以及在实际应用程序中我们需要多少 QML 是一个漫长的讨论。

关于qt - 这是一个不好的做法吗 : embed QML in a QT dockable widgets application?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817038/

相关文章:

c++ - 关于qt读取文件内容

android - 安卓版 Qt : change the application icon

c++ - QML 与 CPP 交互 : property double results in NaN

qt - QML 定义对象属性

qt - 减少 Qml 路径 View 成员之间的距离

c++ - qml 元素的自定义渲染

c++ - 如何根据文件类型专门化小部件?

c++ - 从 Qt 4.2.1 升级到 Qt 4.6.1 改变了字体

c++ - 从 Qml 传递到 C++ 的对象类型

c++ - Qt,颜色选择器对话框?