#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextBrowser>
//类的前置声明,告诉编译器这是一个类允许编译通过
class QNetworkReply;
class QNetworkAccessManager;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void replyFinished(QNetworkReply* reply);
private:
QTextBrowser* content_show_;
QNetworkAccessManager* manager_;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QDebug>
#include <QtNetwork>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(800,600);
content_show_ = new QTextBrowser(this);
content_show_->setGeometry(100,50,300,300);
manager_ = new QNetworkAccessManager(this); //用来发送网络请求和接收应答
//关联管理器,网络应答结束发射信号
connect(manager_, &QNetworkAccessManager::finished, this, &MainWindow::replyFinished);
//发送网络请求。并返回一个QNetworkReply对象
//管理器还提供发送HTTP POST请求的post()函数\HTTP PUT请求的put()函数以及HTTP DELETE请求的deleteResource()函数
manager_->get(QNetworkRequest(QUrl("http://www.qter.org")));
}
MainWindow::~MainWindow()
{
}
void MainWindow::replyFinished(QNetworkReply *reply)
{
//QNetworkReply继承自QIODevice类,可以像操作一般的I/O设备操作该类
QString all = reply->readAll();//读取所有应答数据
content_show_->setText(all);
reply->deleteLater();//删除replay对象
}