0

我正在 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项以检索一些自定义项的信息(一种动态过程),因此我需要一个根对象。没有对象开始扫描,没有用继续,我的应用程序正在关闭。

4

1 回答 1

0

糟糕,抱歉,我不知道有关使用windeployqt部署 qtquick 应用程序的所有内容。我尝试过的唯一其他应用程序是一个 android 应用程序,并且该捆绑包是直接为 android 目标制作的。

于 2019-08-07T08:19:04.370 回答