将Qt Qml App部署到Windows会显示一个空白窗口

时间:2014-01-27 23:53:23

标签: c++ windows visual-studio qt

在尝试将Qt / Qml应用程序部署到Windows 8后遇到很多问题,正如我在此问题中所述:Deploying Qt Qml app to Windows 8 shows me a blank window

我可以让它复制Qt5Widgets.dll ......但它只能在我自己的开发机器上工作(在那里安装,但我自己的机器)。 然后我尝试在另一台机器(运行Windows 7的VM)上安装它..起初我得到了错过平台插件的错误...好吧,我将qwindows.dll复制到appDir / platforms,它似乎解决了这个问题。 但后来我得到了另一个丢失的dll错误(与VS2010相关的错误),然后我安装了Visual Studio 2010可再发行组件...好了,现在应用程序启动了,但是有一个空白窗口:( qml文件和所有内容都在资源文件中,因此它应该在二进制文件中。 我不知道从那里去哪里找到这个问题。

知道我该怎么办?奇怪的是它在我自己的开发机器上安装得很好。 我的结论是在OS X中部署Qt要容易得多。

2 个答案:

答案 0 :(得分:1)

我在使用空白窗口部署Qml应用程序时遇到了很多麻烦。

一般来说,这个网站提供了有用的提示: https://qt-project.org/doc/qt-5.1/qtdoc/deployment-windows.html

在我的案例中,空白窗口问题引起了两件不同的事情:

  1. qml文件的相对路径不正确。我已经通过将qml文件存储在资源文件中然后从那里调用它来解决了这个问题。

  2. 如果应用程序位于网络驱动器上,这似乎是一个问题。除了将应用程序复制到本地文件夹之外,我还没有找到解决方案。

  3. 总的来说,我认为部署是一个很大的痛苦: - /

答案 1 :(得分:1)

我已经通过以下步骤解决了问题:

  • 检查您的qml文件路径。例如,默认生成的代码如下:

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/test/main.qml"));
    

    所以qmls应该在“qml / test”文件夹中

  • 检查缺失的dll:

    1. 从Windows Sysinternals套件(http://technet.microsoft.com/en-us/sysinternals/dd535533
    2. 下载VmMap工具
    3. 在qt creator中编译并运行您的应用,以使其正常工作
    4. 运行VmMap并打开正在运行的应用程序。
    5. 按“详细信息”对下方窗口进行排序 - 这样您就会看到按路径排序的所有已加载的DLL。
    6. 复制丢失的dll。它现在应该工作了!