溫馨提示×

溫馨提示×

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

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

Qt項目架構(gòu)知識點有哪些

發(fā)布時間:2021-12-15 10:07:24 來源:億速云 閱讀:121 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“Qt項目架構(gòu)知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Qt項目架構(gòu)知識點有哪些”吧!

(一)通用規(guī)則
  1. 除了極小的微型demo級別項目外,其余項目建議用pri分門別類不同文件夾存放代碼文件,方便統(tǒng)一管理和查找。

  2. 同類型功能的類建議統(tǒng)一放在一起,如果該目錄下代碼文件數(shù)量過多,也建議拆分多個目錄存放。

  3. 比如就3-5個界面的項目,統(tǒng)一搞個form.pri存放這些界面,而當(dāng)項目越來越大,界面可能也需要按照功能劃分,比如系統(tǒng)配置的窗體放在一個目錄下,日志管理的窗體放在一個目錄下。

  4. 很多通用功能,多個項目都會用到,可以考慮封裝成pri形式的模塊,俗稱輪子,不斷完善這些輪子,多個項目共享該模塊,一旦遇到BUG修復(fù),只需要更改一個地方就行。

  5. 項目如果還更大或者項目組人員分配不同功能,可以考慮插件形式,插件一般會用到兩種,一種是普通動態(tài)庫形式的插件,必須和主程序放在一起;一種是Qt機(jī)制的插件,放在指定的目錄。

(二)全局配置文件

全局配置文件管理類 appconfig.h 用來讀寫對應(yīng)項目的配置文件。

  1. 格式可以是ini、xml、json等,小項目建議ini,怎么方便怎么來,相當(dāng)于將配置文件的值映射到全局變量。

  2. 配置文件如果配置項較多建議分組存儲方便查找,而不是全部放在一個大分組中。

  3. 讀配置文件的時候可以判斷配置文件是否存在、配置項是否缺失等情況,有問題則重新生成配置文件,避免惡意刪除配置文件導(dǎo)致程序運行異常。

  4. 讀配置文件的時候可以填入默認(rèn)值(qt配置文件類QSettings的value方法的第二個參數(shù),set.value("Hardware", App::Hardware)),避免初始時候讀取不到節(jié)點而導(dǎo)致配置項值不符合預(yù)期值類型。

  5. 讀配置文件完成后可以重新判斷配置項的值是否符合要求,對值進(jìn)行過濾和矯正,防止人為打開配置文件修改后填入了異常的值,比如定時器的間隔為0,要重新糾正設(shè)定為合法的值。

  6. 帶中文的初始值用QString::fromUtf8包起來,比如QString::fromUtf8("管理員")。

  7. 帶中文的配置項要設(shè)置配置文件編碼為 utf-8,set.setIniCodec("utf-8")。

(三)全局變量

全局變量管理類 appdata.h 用來設(shè)置項目中用到的所有全局變量。

  1. 比如當(dāng)前用戶/系統(tǒng)是否鎖定等,這樣可以在任意的編碼位置使用該變量進(jìn)行判斷處理。

  2. 可以將UI界面中的導(dǎo)航欄寬高、按鈕大小、圖標(biāo)大小等變量放在這,系統(tǒng)啟動后判斷分辨率等來設(shè)定不同的值。

(四)全局事件中轉(zhuǎn)處理

全局事件中轉(zhuǎn)處理類 appevent.h 用來中轉(zhuǎn)系統(tǒng)中各種跨多個UI以及多個類的事件。

  1. 此類必須是全局單例類,便于全局統(tǒng)一使用。

  2. 比如類a的父類是b,類b的父類是c,現(xiàn)在有個信號要發(fā)給類d,在沒有事件中轉(zhuǎn)處理的情況下的做法是將a信號發(fā)給b,b再發(fā)給c,c再發(fā)給d,如果父類嵌套層級越多越復(fù)雜,代碼越難管理。

  3. 將類a的信號發(fā)給appevent類,然后類d直接關(guān)聯(lián)appevent類進(jìn)行處理就行。

  4. 項目越大,會越發(fā)現(xiàn)事件中轉(zhuǎn)處理的必要性,代碼清晰,管理方便。

(五)全局程序初始化

全局程序初始化類 appinit.h 用來做一些程序啟動后的初始化處理。

  1. 讀取配置文件。

  2. 設(shè)置全局字體。

  3. 設(shè)置全局樣式表,建議先讀取通用的樣式表,然后將額外的樣式表內(nèi)容加到后面一起設(shè)置。

  4. 設(shè)置項目編碼。

  5. 設(shè)置翻譯文件,可以加載多個,包括qt內(nèi)置的qt_zh_CN.qm,用戶自己的翻譯文件等。

  6. 初始化隨機(jī)數(shù)種子。

  7. 新建項目中需要的目錄,防止沒有目錄無法保存文件到目錄。

  8. 初始化數(shù)據(jù)庫,包括打開數(shù)據(jù)庫,載入基礎(chǔ)數(shù)據(jù)比如用戶表、設(shè)備表等。

  9. 啟動日志輸出類用來啟動日志服務(wù)。

  10. 啟動運行時間記錄類用來記錄每次軟件運行開始時間和結(jié)束時間。

  11. 關(guān)聯(lián)全局事件過濾器處理自定義無邊框UI拖動、全局按鍵處理等。

(六)全局通用類
  1. 調(diào)試日志輸出類 savelog.h 用來啟動日志服務(wù),可以將日志輸出到文件或者網(wǎng)絡(luò)打印輸出。

  2. 運行時間記錄類 saveruntime.h 用來記錄每次軟件運行開始時間和結(jié)束時間。

  3. 圖形字體類 iconfont.h 用來設(shè)置圖形字體圖標(biāo)。

到此,相信大家對“Qt項目架構(gòu)知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

qt
AI