Qt之HTTP簡單應用

2021-10-05 07:39:37 字數 1274 閱讀 4161

qt中使用http類要用到這幾個類:qnetworkaccessmanager、qnetworkreply和qnetworkrequest。此外,在.pro檔案中還要加上 qt += network。

qnetworkaccessmanager *manager = new qnetworkaccessmanager(this);

connect(manager, signal(finished(qnetworkreply*)), this, slot(finishedslot(qnetworkreply*)));

finishedslot(qnetworkreply*)是自定義槽函式,寫法可以參考豆子老師部落格:qt 學習之路 2(65):訪問網路(1)

此外,qnetworkreply也有finished(qnetworkreply*)訊號,而post和get方法都會返回qnetworkreply*,所以也可以直接這樣寫:

qnetworkreply *reply = manager->get(request);

connect(reply,signal(finished(qnetworkreply*)), this, slot(finishedslot(qnetworkreply*)));

reply->deletelater();

記得一定要銷毀reply,不然會引起記憶體洩漏。

如果要在請求中帶上驗證,比如token,可以這樣寫:

qnetworkrequest request;

request.seturl(qurl(qstring("")));

request.setrawheader("authorization", token.tolatin1());

manager->get(request);

驗證字段「authorization」是看伺服器那邊欄位是怎麼寫的。也可以使用setrawheader來帶上其它字段,關於setrawheader,可以查閱qt官方文件。

此外還有乙個要注意的地方,qt中的http是非同步的,如果要實現同步可以這樣做:

qeventloop loop;

connect(manager, &qnetworkaccessmanager::finished, &loop, &qeventloop::quit);

loop.exec();

這種做法是建立乙個本地事件迴圈,然後阻塞到loop.exec()這一步。如果收到finished訊號就退出本地事件迴圈,從而實現同步。

Linq to Sql之簡單應用

1,普通方式 增刪改查 新增資料 li new linq.linq i tabledatacontext 例項化乙個表,並繫結資料 linq.i table ii new linq.i table ii.i type typetext.value ii.i fund fundtext.value l...

QT 功能 QSS的簡單實際應用

1.3 qss過濾選擇器和優先順序 1.3.1 qss選擇器 qss有一些規則用來設定符合規則的控制項名稱,通常是按照通用屬性設定一類控制項,對某個有特殊要求的在特別設定。避免大量的重複設定。分為 通配選擇器 所有的控制項屬性設定 型別選擇器 qpushbutton 匹配所有qpushbutton和...

QT學習筆記 QCharts的簡單應用

官方推出的qcharts以後,qt畫圖再也不用需要配置第三方的qcustomplot和qwt外掛程式了,qcharts功能比兩者都好,且易用安裝和使用。我用的是目前最新版的5.11.1這個版本 強烈推薦公升級 安裝的時候只需要勾選qtcharts就行了。qt charts 然後再程式的開頭加上乙個巨...