QT 使用QDataStream時遇到的坑

2021-08-21 14:54:04 字數 619 閱讀 2465

使用qt與go服務端進行通訊,每個資料報大小都以約定好結構為 len | feature| compress| data 

結果使用qdatastream進行新增資料時發現data資料開頭有亂碼,比如傳送12345結果服務端接收為

qt 傳送**如下:

qbytearray socket_packdata=qstring("12345").tolatin1();

bool iscompress=false;

qbytearray senddata;

qdatastream dts(&senddata,qiodevice::writeonly);

dts<

dts<

write(senddata);

flush();

仔細看沒有問題,變改了服務端**,讓其去除data前面四個位元組,結果顯示正常。

後經查詢發覺可能是qbytearry會自動帶上其大小,便使用char * 指標往後移四位,結果伺服器接收資料少四位。

最後才發現dts只需改為

senddata +=socket_packdata 不使用 qdatastream 中的<< 即可
切記切記。

qt初次使用

qt獲取當前系統時間並顯示 包含標頭檔案qdatatime qdatetime time qdatetime currentdatetime 獲取系統現在的時間 qstring str time.tostring yyyy mm dd hh mm ss 設定顯示格式 qdatetime轉換為qstr...

使用Qt資源

在qt做介面的時候經常會用到一些資源,如,國際化,qss等。在qt中可以放在構建目錄下,也可以放在工程目錄中。但是放在工程目錄下的打包的時候就麻煩一些。這裡以為例,介紹一下qt資源的使用方法。1.新建乙個qt視窗專案。然後選中再新建qt資源,這樣在qt專案列表出現了新的資料夾 資源。點開資源看到qr...

qt控制項使用

1.建立視窗 qwidget window new qwidget window resize 300,300 window show qpushbutton button new qpushbutton tr window button move 100,100 button show 2.按鈕控...