Qt5.15.2 下URL图片的显示方法

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);
}

在槽里把图片渲染到指定位置即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值