QQmlApplication未在发行版中加载[重复]
Posted
技术标签:
【中文标题】QQmlApplication未在发行版中加载[重复]【英文标题】:QQmlApplication not loading in release [duplicate] 【发布时间】:2019-08-07 06:13:23 【问题描述】:我正在 Windows 10 上使用 QtQuick/C++ 开发桌面应用程序。在 main() 函数中,我创建了一个 QQmlApplicationEngine,将一些其他类设置为它的上下文属性,最后加载我的qml 文件。
最近一切都很顺利,当我意识到,当我以“已部署”版本启动应用程序时,该引擎没有加载任何 rootObjects。
但是,应用程序在 QtCreator 中启动时,无论是在调试模式还是在发布模式下,都是从根对象开始的。
我在一个单独的文件中记录了一些信息,看起来加载的 Url 是有效的,只是没有 rootObject,我需要它。我在文档中读到 load() 必须等待 objectCreated 信号为远程 URL 做好准备,但我的 qml 文件是本地的,位于资源文件中。顺便说一句,由于 load() 站在 main() 函数中,我看不到如何将 objectCreated() 连接到插槽,以及插槽的位置
int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
Backend B;
engine.rootContext()->setContextProperty("backend", B);
...
QUrl Url = QUrl(QStringLiteral("qrc:/qml/main.qml"));
engine.load(Url);
if (engine.rootObjects().isEmpty())
//end up here, only when launching executable stand alone!
return -1;
return app.exec();
这运行良好,我看不出我的代码中的哪些修改破坏了独立应用程序的进程。
稍后在启动过程中,我扫描 main.qml 的 qml 项以检索一些自定义项的信息(一种动态过程),因此我需要一个根对象。没有对象开始扫描,没有用继续,我的应用程序正在关闭。
【问题讨论】:
【参考方案1】:糟糕,抱歉,我不知道有关使用 windeployqt 部署 qtquick 应用程序的所有内容。我尝试过的唯一其他应用程序是一个 android 应用程序,并且捆绑包是直接为 android 目标制作的。
【讨论】:
以上是关于QQmlApplication未在发行版中加载[重复]的主要内容,如果未能解决你的问题,请参考以下文章