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未在发行版中加载[重复]的主要内容,如果未能解决你的问题,请参考以下文章

子路由模块未在同一页面中加载内容

webview 正在模拟器中加载,但未在设备中加载

UIWebView 未在 ios 中加载

url 未在 UIWebView 中加载

数据未在 UITableView 中加载。可能是啥问题?

数据未在 JQGrid 中加载