日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt网络编程之实例一GET方式

發布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt网络编程之实例一GET方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看了兩天的Qt網絡編程,其實主要就是看了看QNetworkAccessManager、QNetworkRequest和QNetworkReply這三個類的主要內容。在之前,Qt網絡編程主要是使用QHttp等類,但是現在在幫助手冊中這些類已經標記為過時的,所以,現在用Qt編寫網絡程序最好還是使用上面的三個類,之前也說過,對于一個應用程序來說,一個QNetworkAccessManager已經足夠了。不知道你有沒有通過名字看出這三個類的聯系呢?這里再貼一下三個類的官方說明,加強印象,也有助于大家對照接下來的示例看。

?

QNetworkAccessManager

QNetworkRequest

QNetworkReply

Allows the application to send network requests and receive replie

Holds a request to be sent with QNetworkAccessManager

Contains the data and headers for a request sent with QNetworkAccessManager

個人感覺三者關系可簡單理解如下:

?

? ? ? ? ? ?接下來就看一個示例,其實主要內容還是Nokia給的示例,但是源程序有錯誤之處,我這里進行修改了,這里先貼一下效果:

? ? ? ? ?再來貼一下主要的代碼,代碼簡單,一看就懂,呵呵:

?

[cpp]?view plaincopy
  • #include?"mainwindow.h"??
  • #include?"ui_mainwindow.h"??
  • ??
  • #include?<QNetworkReply>??
  • #include?<QNetworkRequest>??
  • ??
  • MainWindow::MainWindow(QWidget?*parent)?:??
  • ????QMainWindow(parent),??
  • ????ui(new?Ui::MainWindow)??
  • {??
  • ????ui->setupUi(this);??
  • ??
  • ????nam?=?new?QNetworkAccessManager(this);??
  • ????QObject::connect(nam,?SIGNAL(finished(QNetworkReply*)),??
  • ?????????????this,?SLOT(finishedSlot(QNetworkReply*)));??
  • }??
  • ??
  • MainWindow::~MainWindow()??
  • {??
  • ????delete?ui;??
  • }??
  • ??
  • void?MainWindow::on_pushButton_clicked()??
  • {??
  • ????QUrl?url("http://www.hust.edu.cn/");??
  • ????QNetworkReply*?reply?=?nam->get(QNetworkRequest(url));??
  • ????//?NOTE:?Store?QNetworkReply?pointer?(maybe?into?caller).??
  • ????//?When?this?HTTP?request?is?finished?you?will?receive?this?same??
  • ????//?QNetworkReply?as?response?parameter.??
  • ????//?By?the?QNetworkReply?pointer?you?can?identify?request?and?response.??
  • ??
  • }??
  • ??
  • void?MainWindow::finishedSlot(QNetworkReply?*reply)??
  • {??
  • #if?1??
  • ?????//?Reading?attributes?of?the?reply??
  • ?????//?e.g.?the?HTTP?status?code??
  • ?????QVariant?statusCodeV?=??
  • ?????reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);??
  • ?????//?Or?the?target?URL?if?it?was?a?redirect:??
  • ?????QVariant?redirectionTargetUrl?=??
  • ?????reply->attribute(QNetworkRequest::RedirectionTargetAttribute);??
  • ?????//?see?CS001432?on?how?to?handle?this??
  • ??
  • ?????//?no?error?received???
  • ?????if?(reply->error()?==?QNetworkReply::NoError)??
  • ?????{??
  • ?????????//?read?data?from?QNetworkReply?here??
  • ??
  • ?????????//?Example?1:?Creating?QImage?from?the?reply??
  • ?????????//QImageReader?imageReader(reply);??
  • ?????????//QImage?pic?=?imageReader.read();??
  • ??
  • ?????????//?Example?2:?Reading?bytes?form?the?reply??
  • ?????????QByteArray?bytes?=?reply->readAll();??//?bytes??
  • ?????????//QString?string(bytes);?//?string??
  • ?????????QString?string?=?QString::fromUtf8(bytes);??
  • ??
  • ?????????ui->textBrowser->setText(string);??
  • ?????}??
  • ?????//?Some?http?error?received??
  • ?????else??
  • ?????{??
  • ?????????//?handle?errors?here??
  • ?????}??
  • ??
  • ?????//?We?receive?ownership?of?the?reply?object??
  • ?????//?and?therefore?need?to?handle?deletion.??
  • ?????reply->deleteLater();??
  • #endif??
  • }??

  • ? ? ? 好了,今天就到了

    總結

    以上是生活随笔為你收集整理的Qt网络编程之实例一GET方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。