您好,登錄后才能下訂單哦!
本篇內容主要講解“Qt開發技巧實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Qt開發技巧實例分析”吧!
在某些http post數據的時候,如果采用的是&字符串連接的數據發送,中文解析亂碼的話,需要將中文進行URL轉碼。
QString content = "測試中文"; QString note = content.toUtf8().toPercentEncoding();
Qt默認不支持大資源文件,比如添加了字體文件,需要pro文件開啟。 CONFIG += resources_big
Qt中繼承QWidget之后,樣式表不起作用,解決辦法有三個。強烈推薦方法一。 方法一:設置屬性 this->setAttribute(Qt::WA_StyledBackground, true); 方法二:改成繼承QFrame,因為QFrame自帶paintEvent函數已做了實現,在使用樣式表時會進行解析和繪制。 方法三:重新實現QWidget的paintEvent函數時,使用QStylePainter繪制。
void myclass::paintEvent(QPaintEvent *) { QStyleOption o; o.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &o, &p, this); }
有時候在界面上加了彈簧,需要動態改變彈簧對應的拉伸策略,對應方法為changeSize,很多人會選擇使用set開頭去找,找不到的。
在使用QFile的過程中,不建議頻繁的打開文件寫入然后再關閉文件,比如間隔5ms輸出日志,IO性能瓶頸很大,這種情況建議先打開文件不要關閉,等待合適的時機比如析構函數中或者日期變了需要重新變換日志文件的時候關閉文件。不然短時間內大量的打開關閉文件會很卡,文件越大越卡。
在很多網絡應用程序,需要自定義心跳包來保持連接,不然斷電或者非法關閉程序,對方識別不到,需要進行超時檢測,但是有些程序沒有提供心跳協議,此時需要啟用系統層的保活程序,此方法適用于TCP連接。
int fd = tcpSocket->socketDescriptor(); int keepAlive = 1; //開啟keepalive屬性,缺省值:0(關閉) int keepIdle = 5; //如果在5秒內沒有任何數據交互,則進行探測,缺省值:7200(s) int keepInterval = 2; //探測時發探測包的時間間隔為2秒,缺省值:75(s) int keepCount = 2; //探測重試的次數,全部超時則認定連接失效,缺省值:9(次) setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive)); setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, (void *)&keepIdle, sizeof(keepIdle)); setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval)); setsockopt(fd, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));
如果程序打包好以后彈出提示 This application failed to start because it could not find or load the Qt platform plugin 一般都是因為platforms插件目錄未打包或者打包錯了的原因導致的。
非常不建議tr中包含中文,盡管現在的新版Qt支持中文到其他語言的翻譯,但是很不規范,也不知道TMD是誰教的,tr的本意是包含英文,然后翻譯到其他語言比如中文,現在大量的初學者濫用tr,如果沒有翻譯的需求,禁用tr,tr需要開銷的,Qt默認會認為他需要翻譯,會額外進行特殊處理。
很多人Qt和Qt Creator傻傻分不清楚,經常問Qt什么版本結果發一個Qt Creator的版本過來,Qt Creator是使用Qt編寫的集成開發環境IDE,和宇宙第一的Visual Studio一樣,他可以是msvc編譯器的(WIN對應的Qt集成安裝環境中自帶的Qt Cerator是msvc的),也可以是mingw編譯的,還可以是gcc的。如果是自定義控件插件,需要集成到Qt Creator中,必須保證該插件的動態庫文件(dll或者so等文件)對應的編譯器和Qt版本以及位數和Qt Creator的版本完全一致才行,否則基本不大可能集成進去。特別注意的是Qt集成環境安裝包中的Qt版本和Qt Creator版本未必完全一致,必須擦亮眼睛看清楚,有些是完全一致的。
超過兩處相同處理的代碼,建議單獨寫成函數。代碼盡量規范精簡,比如 if(a == 123) 要寫成 if (123 == a),值在前面,再比如 if (ok == true) 要寫成 if (ok),if (ok == false) 要寫成 if (!ok)等。
到此,相信大家對“Qt開發技巧實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。