【发布时间】:2019-12-30 21:17:34
【问题描述】:
我正在尝试在 Visual Studio 2019 中使用 Qt 构建演示应用程序。我使用 Visual Studio IDE 中的 Qt VS 工具和 Qt 设计器来创建我的用户界面。我还使用 Qt SVG 模块来为我的用户界面使用 SVG 图像。
我实现了一个工作项目,只要我从 Visual Studio IDE 运行它,它就可以在调试和发布模式下运行良好。现在我想将它作为一个独立的 .exe 文件分发。为此,我尝试创建一个压缩存档,其中包含 .exe 本身、所需的 Qt DLL,当然还有接口所需的资源。
编译后的 .exe 可以在其自己的目录中毫无问题地执行,但是我在资源中添加的图像均不可见。我尝试了几种方法来解决这个问题,并阅读了许多解释如何在 exe 文件中使用和/或嵌入 Qt 资源的教程。它们都不适合我。
我已经尝试过:
- 只需复制 .exe 目录中的图像,无论是否保留其目录层次结构,但只有 .png 和 .jpg 图像可见,所有 SVG 都丢失了。
- 使用 Qt rcc.exe 工具编译一个 Qt 资源文件 (.rcc),并将其添加到 Visual Studio 资源中,无效。
- 使用“创建基本 .pro 文件...”菜单项(也生成一个 .pri 文件)生成一个 .pro 文件并添加以下行,但没有成功:
RESOURCES += MyResName.qrc
- 在我的源代码的不同位置添加以下行(主窗体构造函数、main() 函数...)。没有任何效果:
QResource::registerResource("MyResName.rcc");
...
Q_INIT_RESOURCE(MyResName)
- 玩弄和混合上述想法,没有任何效果。
所以有人可以给我一个尽可能简单的解释,说明如何正确构建一个具有所需资源的 .exe 文件,该文件可能以独立的方式工作,使用 Qt 和 Visual Studio 2019,以便分发它,尊重以下约束:
- 该项目是使用 Qt 和 Visual Studio 2019 开发的 C++ 项目。
- 该项目使用 Qt,有一个使用 Qt Designer 构建的 .ui 文件,该文件嵌入了多个 SVG 和/或 PNG/JPG 图像,并且如果从 IDE 运行 exe,这些图像在设计时可见。
- 该项目使用 .qrc 文件指向应用程序所需的图像(无论是否为 SVG)。
- 图像通过 styleSheet 属性添加到 UI 组件中,如下所示:
image: url(resources/images/im-dropbox.svg) center center;
- 其他资源文件,如 .pro、.pri、.rcc 等,可以毫无问题地生成。所需资源已很好地嵌入到生成的文件中(已验证)。
请帮帮我,因为这种情况让我很头疼。
【问题讨论】:
标签: visual-studio qt resources embedded-resource