来自资源文件的图像未在 Qt 中加载

问题描述 投票:0回答:3

我正在尝试通过资源文件将图像插入到我的程序中,就像:

<RCC>
    <qresource prefix="/">
        <file>green.png</file>
        <file>other files</file>
    </qresource>
</RCC>

当我尝试使用

QImage
QPixmap
加载它时,例如:

QImage *green = new QImage(":/green.png");
if(green->isNull()) qDebug("null");

我总是看到那个

null
消息,表明我做错了什么。

一个解决方案可能是使用绝对路径,如:

<file>C:\\Users\\user\\Documents\\project\\green.png</file>

这当然有效,但我更喜欢使用资源文件来实现它。

qt qimage qt-resource
3个回答
8
投票

如果您的

png
文件与项目的
.pro
.qrc
.cpp
文件位于同一文件夹中,您的问题就会得到解决。

通常将所有图像放入特殊的子文件夹中很方便,例如Resources。你的

.qrc
文件看起来像这样:

<RCC>
    <qresource prefix="/">
         <file>Resources/green.png</file>
        <file>Resources/other files</file>
    </qresource>
</RCC>

你可以像这样在你的

.cpp
文件中使用它:

QImage *green = new QImage(":/Resources/green.png");

3
投票

以下是如何将资源文件添加到项目中的步骤

.qrc

  • 图像文件夹必须包含在项目文件夹内
  • 右键单击项目文件
  • 新增
  • Qt -> Qt 资源文件 -> 按选择 -> 命名文件 -> 完成。
  • 打开
    .qrc
    文件后,按添加 -> 添加前缀 -> 根据需要更改前缀名称。
  • 添加 -> 添加文件 -> 并选择您的图像。
  • 转到
    mainwindow.cpp
    文件并使用
    .qrc
    文件中的图像,如下所示:
ui->play->setIcon(QIcon(":/Playericons/icons8-pause-30.png"));

在我的例子中,图像文件夹被称为

Playericons
.


2
投票

添加资源文件后记得运行qmake吗?

© www.soinside.com 2019 - 2024. All rights reserved.