QLabel从文件加载图像

时间:2019-01-29 08:50:10

标签: c++ qt5 qimage qlabel

我使用Qt资源系统加载图像。

像下面的照片一样

enter image description here

enter image description here

但是资源收集文件(.qrc)仅20MB

enter image description here

因此,我尝试使用QImage :: loadFromData加载供我的应用程序使用的图像。

但是对于资源收集文件(.qrc),我使用

QImage image0(":/images/dashboard_n.png");

加载图像。

如何使用QImage::loadFromData

加载图像

如何为qrc使用相对路径? enter image description here

我无法编译和更新terminal.qrc。

那还是旧的。

2 个答案:

答案 0 :(得分:1)

这是一个使用loadFromData加载到QPixmap的简单示例。您可以以相同的方式加载到qimage,但无论如何都必须将其转换为pixmap才能加载到qlabel

 QByteArray *temp = new QByteArray();
 QFile *file = new QFile("image.png");
 file->open(QIODevice::ReadOnly);
 *temp = file->readAll();
 QPixmap *pix = new QPixmap();
 pix->loadFromData(*temp);
 label->setPixmap(*pix);

答案 1 :(得分:1)

通常将image.png文件放在* .qrc所在的目录中,例如:

${Project_Resource_Directory}/images/dashboard_n.png

和.qrc文件将放在这里:

${Project_Resource_Directory}/resources.qrc

您的.qrc文件应如下所示:

<RCC>
     <qresource prefix="/">
         <file>images/dashboard_n.png</file>
     </qresource>
</RCC>

将此代码放入您的.pro文件:

RESOURCES += ${Project_Resource_Directory}/resources.qrc

在您的项目结构中而不是$ {Project_Resource_Directory}中替换您的资源目录名称,以便Qt可以检测到您的* .qrc文件并将其编译为使用rcc的c代码

然后,您可以使用以下代码在任何cpp代码中使用此地址:

":/images/dashboard_n.png"