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地址栏输入想要访问的网页地址,运行结果如下所示:

 

posted on 2013-10-24 19:13  心寒若冰  阅读(874)  评论(0编辑  收藏  举报