Qt開發經驗小技巧216 220

2022-10-11 09:42:08 字數 1737 閱讀 6108

qt的網路庫支援udp廣播搜尋和組播搜尋,其中組播搜尋可以跨網段搜尋,有時候你會發現失靈,此時你可以嘗試把本地的虛擬機器的網絡卡禁用試試,估計就好了。還有就是在本地開啟了**啥的,先關掉試試。近期在使用tcpsocket連線的時候,發現在qt4和qt5中正常的程式,到了qt6中就不行了,報錯提示 the proxy type is invalid for this operation ,原來是本地設定了**導致的,可能在qt6以前會預設跳過去不處理。

//也可以通過**設定跳過**

#include qnetworkproxyfactory::setusesystemconfiguration(false);

//下面這樣每次設定也可以

tcpsocket->setproxy(qnetworkproxy::noproxy);

//查閱到文章

//從5.8開始socket預設**型別是defaultproxy而不是noproxy,不知道出於什麼考慮。

關於交叉編譯,對於初學者來說是個極難跨過去的砍(一旦跨過去了,以後遇到需要交叉編譯的時候都是順水推舟、信手拈來。),因為需要搭建交叉編譯環境,好在現在廠家提供的板子基本上都是測試好的環境,尤其是提供的編譯器,不用自己再去折騰,按照官方手冊來基本上不會有啥的的問題。

在qt中設定有時候會發現不成功,很可能是因為檔案的拓展名不正確導致的,比如jpg的拓展名是png,bmp的拓展名改成了jpg,qimage、qpixmap傳入檔案路徑載入,是通過拓展名去呼叫對應的解析演算法,比較傻,但是速度快,不用經過分析具體內部是何種格式。如果想要不管拓展名都能保證載入成功,則必須讀取檔案資料載入的方式處理。

//可以是資源檔案中的也可以是本地檔案

qstring filename = ":/test.png";

//此方式按照拓展名來區分具體格式不準確

//如果拓展名不正確就無法載入成功

ui->label->setpixmap(qpixmap(filename));

//通過直接讀取資料載入保證成功

qfile file(filename);

file.open(qiodevice::readonly);

qbytearray data = file.readall();

//通過 qimage 處理

qimage img;

img.loadfromdata(data);

//下面這種方式也行

//qimage img = qimage::fromdata(data);

ui->label->setpixmap(qpixmap::fromimage(img));

//通過 qpixmap 處理

qpixmap pix;

pix.loadfromdata(data);

ui->label->setpixmap(pix);

總結幾個qt版本的冷知識。

qt官方除了qt庫一直在公升級外,對應的整合開發環境也在更新公升級,一般會選用最新的qt庫編譯新版本,要注意的是,有些人安裝的舊版本的qtc,載入比較高版本的qt庫,很容易出現報錯提示 project error: cannot run compiler 'g++'. maybe you forgot to setup the environment? 之類的,一般是版本跨度過大,比如用qt5.5附帶的qtc載入qt5.9的庫,導致有些環境識別不到,可能是qtc在新版本中對某些識別處理規則有變動。所以一般建議可以用新的qtc載入舊的qt庫,不建議舊的qtc載入新的qt庫。

Qt開發經驗小技巧1 10

當編譯發現大量錯誤的時候,從第乙個看起,乙個乙個的解決,不要急著去看下乙個錯誤,往往後面的錯誤都是由於前面的錯誤引起的,第乙個解決後很可能都解決了。定時器是個好東西,學會好使用它,有時候用qtimer singleshot可以解決意想不到的問題。開啟creator,在構建套件的環境中增加makefl...

Qt開發經驗小技巧11 20

獲取類的屬性 const qmetaobject metaobject object metaobject int count metaobject propertycount for int i 0 i count i qt內建圖示封裝在qstyle中,大概七十多個圖示,可以直接拿來用。qstyl...

Qt開發經驗小技巧31 40

判斷msvc編譯器版本。if msc ver 1800 msvc 14.0 msc ver 1900 visual studio 2015 msvc 12.0 msc ver 1800 visual studio 2013 msvc 11.0 msc ver 1700 visual studio 2...