qt 通过http获取网络图片并且显示

通过HTTP来获得网页上的图片,在MFC中主要是通过类CInternetSession类完成,在QT中则是通过三个类来完成,QNetworkAccessManager,QNetworkRequest,QNetworkReply,三个类的详细用法还需自己多看文档,这里就不多解释了,下面直接贴代码,别忘了在Qt工程中加入 QT += core network.


附上代码和效果图:

void QtGuiApplication1::downloadUrlPix()
{
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";


QNetworkAccessManager *manager = new QNetworkAccessManager;


QNetworkRequest request;
request.setUrl(QUrl(url));


connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(onDownloadFileComplete(QNetworkReply *)));


manager->get(request);

}


void QtGuiApplication1::onDownloadFileComplete(QNetworkReply *reply)
{
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
QString filePath = "../";


const QString fileName = filePath + url.right(url.size() - url.lastIndexOf("/"));
qDebug() << fileName;


QFile file;


file.setFileName(fileName);
file.open(QIODevice::WriteOnly);
if (!file.isOpen()) {
qDebug() << "file is not open";
return;
}


if (!file.isWritable()) {
qDebug() << "file  write disable";
return;
}


file.write(reply->readAll());
file.close();
}


void QtGuiApplication1::showPixMap()
{
QString filePath = "../";
QString url = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
QString fileName = filePath + url.right(url.size() - url.lastIndexOf("/"));

/*
string filePath = "../";
string url      = "http://120.27.131.71:8080/topeye/upload/portraits/3bead3433cd04b4b96b530c6ad8c87fd.png";
string fileName = "../3bead3433cd04b4b96b530c6ad8c87fd.png"; // = filePath + url.find("");
*/


if (filesystem::exists(fileName.toStdString())) {
QPixmap pix = QPixmap(fileName);
pix = pix.scaled(QSize(236, 236), Qt::KeepAspectRatio); //调整图片大小
ui.label_pix->setAlignment(Qt::AlignCenter); //居中显示
ui.label_pix->setPixmap(pix);
}
else {
qDebug() << "file is not exit";
}

}



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值