Qt 在Windows上部署QML桌面应用程序时获取空窗口

Qt 在Windows上部署QML桌面应用程序时获取空窗口,qt,deployment,desktop,qml,Qt,Deployment,Desktop,Qml,我刚刚在Windows上完成了QML桌面应用程序的编写(使用QtCreator和c++) 根据说明,我已使用MinGw编译器在C:\QtSDK\Desktop\QT\4.7.4\MinGw\imports\QT\labs\Components文件夹中安装了QT Quick Desktop组件 我用命令qmake&&jom debug&&jom install安装了它两次,一次用于调试,一次用于发布,一次用于命令qmake&&jom release&&jom install,所以我现在有两个dll

我刚刚在Windows上完成了QML桌面应用程序的编写(使用QtCreator和c++)

根据说明,我已使用MinGw编译器在C:\QtSDK\Desktop\QT\4.7.4\MinGw\imports\QT\labs\Components文件夹中安装了QT Quick Desktop组件

我用命令qmake&&jom debug&&jom install安装了它两次,一次用于调试,一次用于发布,一次用于命令qmake&&jom release&&jom install,所以我现在有两个dll文件:1.styleplugin.dll,2.styleplugind.dll。当我需要的时候,我会使用它们。我已将其导入到我的应用程序中:

导入Qt.labs.components 0.1

现在,我必须部署我的应用程序,并使其在所有机器上运行:安装了Qt,或者没有。我尝试通过以下步骤完成:

复制这些文件:application.exe、QtCore4.dll、QtGui4.dll、QtNetwork4.dll、styleplugin.dll和styleplugind.dll

但是当我运行.exe文件时,我会看到一个白色的空屏幕

(顺便说一句,当我从发布文件夹运行.exe文件时,我只能再次看到一个白色窗口,当我对一个简单的小部件GUI应用程序执行相同操作时,它从那里运行良好)

你知道这种情况的原因吗


任何答复都将不胜感激

您可能忘记了将QML文件部署到exe?(qrc) 测试它的简单方法是将带有qml文件的文件夹复制到exe文件附近的目标

UPD: 请看这篇文章

即:

  • 首先需要在项目菜单中添加新的“资源文件”
  • 然后将所有qml文件放入该资源文件中
  • 在QDeclarativeView中更改“源”,如:

    viewer->setSource(QUrl("qrc:/main.qml"));
    

  • 一种可能的解决方案是通过运行命令来启用警告

    qmlviewer.exe -warnings show qmlfilename.qml
    
    如果qmlviewer找不到任何依赖的导入库,它将显示在这里

    要确保qmlviewer可以访问导入库,请使用命令行上的-I 或者将QML_IMPORT_PATH环境变量设置为包含导入库的文件夹

    例如:

    qmlviewer.exe-警告显示-I qmlfilename.qml
    

    设置QML\u导入路径=
    

    模块导入搜索路径在哪里(不带)

    Ad应用程序日志中的输出是什么?我打赌它会帮助您找到solutionQt Creator的默认运行配置,该配置从project/而不是从project/release/运行.exe,并且如果.qml文件查找是相对于.exe运行路径进行的,则可能找不到.qml文件。尝试将.exe文件夹向上移动一个文件夹,并检查运行配置设置(以查看是否将运行路径设置为/release会以您在target上看到的相同方式破坏内容)请响应答案或接受答案我真的忘记了,我只是不知道如何将QML文件部署到exe?(qrc)。如果我复制qml文件夹-它工作得很好。
    qmlviewer.exe -warnings show -I <directory> qmlfilename.qml
    
    set QML_IMPORT_PATH=<directory>