1.确定图片格式
如果你需要展示的图片是
以上几种,那么不需要装插件,否则请移步至插件安装环节-> 点我去安装插件
2.图片处理的思路:
1.下载到本地存储,然后再加载。
2.下载QByteArray,然后直接加载。
没有太多的好处与坏处,各取所需哦。
3.本文提供一个下载器,支持第二种方法,可以直接使用Label显示图片。
首先,创建.h文件,代码如下:
//
// Created by Administrator on 2023/3/12.
//
#ifndef UNTITLED1_FILEDOWNLOADED_H
#define UNTITLED1_FILEDOWNLOADED_H
#include <QObject>
#include <QByteArray>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QUrl>
class imageDownloader : public QObject {
Q_OBJECT
public:
explicit imageDownloader(QUrl imageUrl);
~imageDownloader();
QByteArray downloadedData() const;
signals:
void downloaded();
private slots:
void fileDownloaded(QNetworkReply *pReply);
private:
QNetworkAccessManager m_WebCtrl;
QByteArray m_DownloadedData;
};
#endif //UNTITLED1_FILEDOWNLOADED_H
然后创建.cpp文件,代码如下
//
// Created by Administrator on 2023/3/12.
//
#include "fileDownloaded.h"
imageDownloader::imageDownloader(QUrl imageUrl)
{
connect(&m_WebCtrl, &QNetworkAccessManager::finished,this, &imageDownloader::fileDownloaded);
QNetworkRequest request(imageUrl);
m_WebCtrl.get(request);
}
imageDownloader::~imageDownloader() {
}
void imageDownloader::fileDownloaded(QNetworkReply *pReply)
{
QVariant statusCode = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
if (statusCode.isValid()) {
qDebug() << "status code=" << statusCode.toInt();
}
m_DownloadedData = pReply->readAll();
emit downloaded();
}
QByteArray imageDownloader::downloadedData() const
{
return m_DownloadedData;
}
使用方法:
m_pImgCtrl = new imageDownloader(QUrl::fromUserInput("https://alimg.szlcsc.com/upload/public/product/breviary/20221231/067F2E184A48CF05FB26A97ADBC96CD2.jpg"));
connect(m_pImgCtrl, SIGNAL(downloaded()), SLOT(loadImage()));
创建一个新的Downloader,然后将链接信号和槽
void mainWindows::loadImage()
{
QPixmap buttonImage;
buttonImage.loadFromData(m_pImgCtrl->downloadedData());
QPixmap scaledPixmap = buttonImage.scaled(275, 275, Qt::KeepAspectRatio);
ui->label_24->setPixmap(scaledPixmap);
}
在槽里把图片渲染到指定位置即可。