QLabel 从文件加载图像
QLabel load image from file
我使用Qt资源系统加载图片。
但是资源集合文件 (.qrc) 只有 20MB
所以我尝试使用 QImage::loadFromData 加载图像供我的应用程序使用。
但是对于资源集合文件 (.qrc) 我使用
QImage image0(":/images/dashboard_n.png");
加载图像。
如何使用 QImage::loadFromData
加载图像
如何使用qrc的相对路径?
而且我无法编译和更新 terminal.qrc。
这是一个使用 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);
通常将 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"
我使用Qt资源系统加载图片。
但是资源集合文件 (.qrc) 只有 20MB
所以我尝试使用 QImage::loadFromData 加载图像供我的应用程序使用。
但是对于资源集合文件 (.qrc) 我使用
QImage image0(":/images/dashboard_n.png");
加载图像。
如何使用 QImage::loadFromData
如何使用qrc的相对路径?
而且我无法编译和更新 terminal.qrc。
这是一个使用 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);
通常将 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"