所以我有一个简单的应用程序,它使用QML作为我的图形界面,c ++代码用于某些逻辑。我正在寻找一种方法将QML编译成c ++代码并将其链接到我的二进制文件中,并在Qt主页上找到此页面:
http://doc.qt.io/QtQuickCompiler/
基本上它说我的所有QML图形界面文件都使用资源系统,并在我的.pro文件中将QML编译器标志添加到我的qmake配置行中,一切都应该好了。
据我所知,一切编译都很好,但是当我使用Qt windeployqt.exe工具获取所有依赖文件并在干净的系统上测试时,我得到一个小的白色屏幕,好像我的QML文件是没有正确加载。
我使用" qrc:/ mainqml.qml"对我的主要QML文件有一个c ++引用;那就是它。
知道我做错了吗?
答案 0 :(得分:3)
您正在使用Qt的开源版本。它没有Qt Quick编译器,直到Qt 5.11包含它 - 并且在返工之后也是如此。因此它的性能优于Qt 5.10及之前的预编译QML。
我得到一个小的白色屏幕,好像我的QML文件没有正确加载。
...因此您需要使用应用程序部署这些文件,否则它将无法正常工作。
将QML编译器标志添加到我的qmake config
该标志是开源Qt版本的无操作,直到Qt 5.11。
答案 1 :(得分:3)
Qt Quick Compiler仅附带Qt Commercial License,但您仍然可以将QML文件编译为qrc文件。从Qt Creator启动Qt Quick应用程序项目就是这样做的。
使用windeployqt
部署QML应用程序需要额外的标记--qmldir
,例如
windeployqt --(release or debug) --qmldir %PATH_TO_YOUR_QML_FILES% %YOUR_APPLICATION%.exe
它将解析您的qml文件并部署您使用的所有qml导入。