这是一个不好的做法:在QT可停靠小部件应用程序中嵌入QML吗?

时间:2016-04-23 22:09:52

标签: qt qml

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

1 个答案:

答案 0 :(得分:2)

  

我的应用程序在性能方面要求很高,我是   考虑将小部件嵌入到QML中以便更容易,更快速   控制用户界面,但我真的很担心性能,值得   尝试还是只是不好的做法?

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

至于性能,不确定您的应用需要什么样的性能?整体QML呈现通过OpenGL或非常快速地进行筛选。另一方面,使用QML,您经常需要处理JavaScript,这当然不能与C ++相媲美。不过,商业Qt已经引入了Qt Quick Compiler

至于基于QWidget的UI与QML:讨论可以被视为意见的表达等。然后有一些考虑点:

  • 开发和维护一种基于小部件或基于QML的UI更容易。
  • 混合用户界面是可能的,但理解你可以从中获得什么是有意义的。
  • 大多数桌面应用仅对小部件完全满意。
  • 当应用程序应该移植到移动平台时,QML更有意义。
  • 当应用程序依赖于触摸'那么QML也比小部件更有用。
  

QT小部件在UI开发方面非常耗时,我的   CSS工作表已经有3000行代码了,现在是时候了   消费来做UI变更。

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

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

整体Qt正在从小部件转向QML,但我们可以在实际应用中获得多少以及我们需要多少QML,这是一个长期的讨论。