QT入门(十六)——http通信

效果图

在这里插入图片描述
在文本输入框中输入图片地址(注意前面必须是http),点击发送请求,即可显示图片,如果是https就无法解码。(如果原先的图片的链接开头是https,那么直接把s去掉即可)

.pro文件

QT       += core gui network

.h文件

private slots:
    void on_SF_BT_clicked();


    //读取信息
    void read_data(QNetworkReply *app);


private:
    Ui::MainWindow *ui;


    //声明一个管理对象
    QNetworkAccessManager manager;

http通信是客户端与网页等已经建好的服务器通信,所以我们只需要建立客户端就行了。

全局变量中,创建一个管理对象manager

.cpp

1.点击按钮发送请求

// 发送请求
void MainWindow::on_SF_BT_clicked()
{
    //ui->lineEdit->text();//获取到单行输入框的内容
    // QUrl 将输入的字符串解析成http地址
    QUrl url(ui->lineEdit->text());
    //创建一个请求对象
    QNetworkRequest request(url);
     //发送请求
    manager.get(request);
}

根据输入的url,创建一个请求的对象,让manager去获取这个请求对象
url(ui->lineEdit->text());把字符串编码成服务器能识别的内容。

2.关联信号

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //关联请求完毕,会发出一个信号 finished
    connect(&manager,&QNetworkAccessManager::finished,this,&MainWindow::read_data);
}

当服务器收到请求后,会返回一个报文
当manager获取到请求对象时,发出finished信号,触发该窗口this,去执行rea_data这个槽函数。

3.read_data槽函数

//读取数据
void MainWindow::read_data(QNetworkReply *app)
{
    QByteArray array = app->readAll();

    //创建图片空间
    QPixmap mmp;
    mmp.loadFromData(array);


    //设置图片显示的大小,让图片符合label显示框的大小
    mmp = mmp.scaled(ui->label->size());
    
    //在label中显示图片
    ui->label->setPixmap(mmp);
}

用QNetworkReply *app去得到返回的报文内容

manage获得到的内容,从槽函数的参数中传进来,用一个数组去接住,
然后以图片的形式显示出来就行了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值