头文件
- #include <QNetworkAccessManager>
- 网络管理者
- #include <QNetworkReply>
- 请求
- #include <QNetworkRequest>
- 响应
步骤
在pro里添加模块
QT += core gui network
在ui界面的.h里加入头文件,并定义一个管理者指针,槽函数
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
private:
QNetworkAccessManager *manager;
private slots:
void onReplyDataSlot(QNetworkReply *reply);
在ui界面的构造函数里添加
//1、创建一个网络访问管理者对象
manager = new QNetworkAccessManager;
//3、当发送网络请求之后,服务器进行http应答,manager会自动发射finished信号,关联槽函数
//在槽函数中接收应答的数据
//void finished(QNetworkReply *reply) reply就是服务器应答的数据包
connect(manager,&QNetworkAccessManager::finished,this,&Widget::onReplyDataSlot);
实现点击按钮的点击事件
//2、实例化一个网络请求类的对象,将网络数据包放到该对象中
QUrl url("https://lmg.jj20.com/up/allimg/4k/s/02/2109242304361221-0-lp.jpg");
QNetworkRequest request(url);
//发送网络请求 write
manager->get(request);
实现槽函数
void Widget::onReplyDataSlot(QNetworkReply *reply)
{
//获取应答的数据,该数据就是图片的源数据
QByteArray data = reply->readAll();
//将图片的源数据 转换成 图片数据 并且在界面上显示出来
QPixmap pic;
pic.loadFromData(data);
pic = pic.scaled(ui->label->size());
ui->label->setPixmap(pic);
}
因为https是安全协议,qt会出错,需要安装ssl
- 先确定自己qt是32位还是64位
- 下载安装OpenSSL1.1.1的二进制文件
- 下载路径http://slproweb.com/products/Win32OpenSSL.html![](https://file.jishuzhan.net/article/1751997295311720449/d50582564a8e938cabf81f0cf60766ee.webp)
- 安装过程中记住安装位置,安装完去到安装路径将libcrypto-1_1-x64.dll和libssl-1_1-x64.dll两个文件复制到qt根目录下的 qt/版本号/mingw73_64/bin 里