1、新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow。
2、在http.pro文件中的QT += core gui后添加 network,或者直接添加QT += network。
3、在mainwindow.ui文件中分别拖入label控件、lineEdit控件、pushButton控件以及textBrowser控件,如下。
4、在mainwindow.h头文件中添加以下代码,同时添加#include<QtNetwork>
1 private: 2 Ui::MainWindow *ui; 3 QNetworkReply *reply; 4 QUrl url; //存储网络地址 5 6 private slots: 7 void on_pushButton_clicked(); //进入按钮按下 8 void httpFinished();//后对所发射的网络应答结束信号的槽函数
5、在mainwindow.cpp源文件中添加以下代码
1 void MainWindow::on_pushButton_clicked() 2 { 3 url = ui->lineEdit->text(); 4 QNetworkAccessManager *manager;//用来发送网络请求和接收应答。QNetworkAccessManager类允许应用程序发送网络请求和接收网络应答。 5 //应用程序利用QNetworkAccessManager创建的对象在网络上发送请求。它是用QNetworkRequest 类来管理请求,QNetworkReply类进行回复接收。 6 manager = new QNetworkAccessManager(this); 7 reply = manager->get(QNetworkRequest(url));//读取url地址,并开始发送请求 8 //QNetworkRequest类包含一个和 QNetworkAccessManager一起发送的请求。QNetworkRequest是Network Access API的一部分, 9 //并且这个类包含着在网络上发送请求的必要信息。它包含了一个URL和一些可以用来修改请求的附加信息。 10 connect(reply, SIGNAL(finished()), this, SLOT(httpFinished()));//网络应答结束发送相应的信号 11 } 12 13 void MainWindow::httpFinished() 14 { 15 QTextCodec *codec = QTextCodec::codecForName("utf8");//QTextCodec类来转换编码,以便正确显示中文 16 QString all = codec->toUnicode(reply->readAll());//readAll()函数可以读取所有应答数据 17 ui->textBrowser->setText(all); 18 reply->deleteLater();//在完成数据的读取后,需要使用deleteLater()来删除replay对象。 19 }
6、在URL地址栏输入想要访问的网页地址,运行结果如下所示: