中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt開發技巧實例分析

發布時間:2021-12-15 13:50:05 來源:億速云 閱讀:140 作者:iii 欄目:互聯網科技

本篇內容主要講解“Qt開發技巧實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Qt開發技巧實例分析”吧!

  1. 在某些http post數據的時候,如果采用的是&字符串連接的數據發送,中文解析亂碼的話,需要將中文進行URL轉碼。

QString content = "測試中文";
QString note = content.toUtf8().toPercentEncoding();
  1. Qt默認不支持大資源文件,比如添加了字體文件,需要pro文件開啟。 CONFIG += resources_big

  2. 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);
}
  1. 有時候在界面上加了彈簧,需要動態改變彈簧對應的拉伸策略,對應方法為changeSize,很多人會選擇使用set開頭去找,找不到的。

  2. 在使用QFile的過程中,不建議頻繁的打開文件寫入然后再關閉文件,比如間隔5ms輸出日志,IO性能瓶頸很大,這種情況建議先打開文件不要關閉,等待合適的時機比如析構函數中或者日期變了需要重新變換日志文件的時候關閉文件。不然短時間內大量的打開關閉文件會很卡,文件越大越卡。

  3. 在很多網絡應用程序,需要自定義心跳包來保持連接,不然斷電或者非法關閉程序,對方識別不到,需要進行超時檢測,但是有些程序沒有提供心跳協議,此時需要啟用系統層的保活程序,此方法適用于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));
  1. 如果程序打包好以后彈出提示 This application failed to start because it could not find or load the Qt platform plugin 一般都是因為platforms插件目錄未打包或者打包錯了的原因導致的。

  2. 非常不建議tr中包含中文,盡管現在的新版Qt支持中文到其他語言的翻譯,但是很不規范,也不知道TMD是誰教的,tr的本意是包含英文,然后翻譯到其他語言比如中文,現在大量的初學者濫用tr,如果沒有翻譯的需求,禁用tr,tr需要開銷的,Qt默認會認為他需要翻譯,會額外進行特殊處理。

  3. 很多人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版本未必完全一致,必須擦亮眼睛看清楚,有些是完全一致的。

  4. 超過兩處相同處理的代碼,建議單獨寫成函數。代碼盡量規范精簡,比如 if(a == 123) 要寫成 if (123 == a),值在前面,再比如 if (ok == true) 要寫成 if (ok),if (ok == false) 要寫成 if (!ok)等。

到此,相信大家對“Qt開發技巧實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

qt
AI

左贡县| 舒兰市| 玉田县| 澎湖县| 武山县| 景泰县| 德昌县| 鄂托克旗| 金沙县| 武平县| 怀安县| 延津县| 新民市| 潼南县| 容城县| 临安市| 金阳县| 博乐市| 安平县| 澳门| 崇仁县| 巴中市| 泾阳县| 长子县| 万荣县| 通榆县| 建平县| 柳林县| 玛曲县| 合山市| 河南省| 竹溪县| 霍山县| 新营市| 蕉岭县| 孝义市| 什邡市| 无极县| 松溪县| 葵青区| 岢岚县|