Qt - 在使用 Visual Studio 构建的 exe 中总是丢失资源

Qt - Resources are always lost in exe built with Visual Studio

我正尝试在 Visual Studio 2019 年使用 Qt 开发一个演示应用程序。我在 Visual Studio IDE 中使用了 Qt VS 工具,并且Qt 设计器来创建我的用户界面。我还使用了 Qt SVG 模块,以便在我的用户界面中使用 SVG 图像。

我实现了一个工作项目,它在调试和发布模式下工作得很好,只要我 运行 它来自 Visual Studio IDE。现在我想将它作为一个独立的 .exe 文件分发。为此,我尝试创建一个压缩存档,其中包含 .exe 本身、required Qt DLL,当然还有接口 requires.

的资源

编译后的 .exe 可以在其自己的目录中毫无问题地执行,但是 none 我在资源中添加的图像是可见的。我尝试了几种方法来解决这个问题,并阅读了许多解释如何使用 and/or 在 exe 文件中嵌入 Qt 资源的教程。 None 其中对我有用。

我已经尝试过:

RESOURCES += MyResName.qrc
QResource::registerResource("MyResName.rcc");
...
Q_INIT_RESOURCE(MyResName)

所以有人能给我一个尽可能简单的解释,说明如何正确地 build 一个 .exe 文件及其 required 资源,它可能以独立的方式工作,使用 Qt 和 Visual Studio 2019,为了分发它,遵守以下限制:

image: url(resources/images/im-dropbox.svg) center center;

请帮助我,因为这种情况让我很头疼。

我将尝试按照我看到的顺序涵盖我看到的所有问题。

首先你不使用资源中的文件,Qt 资源文件路径以 :/ 开头,例如从资源中设置图标(在 C++ 代码中)你将这样做:

a.setWindowIcon(QIcon(":/images/window_title_ico.png"));

现在,要直接从 Qt Designer 使用资源,您需要为每个 ui 文件添加 .qrc 文件(单击该 "edit" 图标,然后 "Open resource file") 之后你可以从资源中设置图标,看打印屏幕(Qt 设计器从 VS 开始)

注意:您可以仔细检查生成的 .ui 文件(它是一个 xml 文件)以查看图标路径是否以 :/ 开头,那么您就知道您已经完成了正确的。 //在 .ui 文件中,您会看到如下内容:

<pixmap resource="resources/resources.qrc">:/images/acceleration.svg</pixmap>

//注意.qrc文件的相对路径,.svg文件路径以:/

开头

最后,为了在部署时显示 .svg,我注意到您也需要部署 Qt5Svg.dll(来自:PATH_2_QT.XX.X\msvcXXX_XX\bin),仅部署 imageformats\qsvg.dll还不够。

希望这有助于澄清一些事情!