Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)

Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)的圖1
版權(quán)聲明:本文為CSDN博主「feiyangqingyun」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/feiyangqingyun/article/details/113985170
一、通用規(guī)則
1、除了極小的微型demo級(jí)別項(xiàng)目外,其余項(xiàng)目建議用pri分門別類不同文件夾存放代碼文件,方便統(tǒng)一管理和查找。
2、同類型功能的類建議統(tǒng)一放在一起,如果該目錄下代碼文件數(shù)量過(guò)多,也建議拆分多個(gè)目錄存放。
3、比如就3-5個(gè)界面的項(xiàng)目,統(tǒng)一搞個(gè)form.pri存放這些界面,而當(dāng)項(xiàng)目越來(lái)越大,界面可能也需要按照功能劃分,比如系統(tǒng)配置的窗體放在一個(gè)目錄下,日志管理的窗體放在一個(gè)目錄下。
4、很多通用功能,多個(gè)項(xiàng)目都會(huì)用到,可以考慮封裝成pri形式的模塊,俗稱輪子,不斷完善這些輪子,多個(gè)項(xiàng)目共享該模塊,一旦遇到BUG修復(fù),只需要更改一個(gè)地方就行。
5、項(xiàng)目如果還更大或者項(xiàng)目組人員分配不同功能,可以考慮插件形式,插件一般會(huì)用到兩種,一種是普通動(dòng)態(tài)庫(kù)形式的插件,必須和主程序放在一起;一種是Qt機(jī)制的插件,放在指定的目錄。
Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)的圖2
二、全局配置文件
全局配置文件管理類 appconfig.h 用來(lái)讀寫對(duì)應(yīng)項(xiàng)目的配置文件。
1、格式可以是ini、xml、json等,小項(xiàng)目建議ini,怎么方便怎么來(lái),相當(dāng)于將配置文件的值映射到全局變量。
2、配置文件如果配置項(xiàng)較多建議分組存儲(chǔ)方便查找,而不是全部放在一個(gè)大分組中。
3、讀配置文件的時(shí)候可以判斷配置文件是否存在、配置項(xiàng)是否缺失等情況,有問(wèn)題則重新生成配置文件,避免惡意刪除配置文件導(dǎo)致程序運(yùn)行異常。
4、讀配置文件的時(shí)候可以填入默認(rèn)值(qt配置文件類QSettings的value方法的第二個(gè)參數(shù),set.value(“Hardware”, App::Hardware)),避免初始時(shí)候讀取不到節(jié)點(diǎn)而導(dǎo)致配置項(xiàng)值不符合預(yù)期值類型。
5、讀配置文件完成后可以重新判斷配置項(xiàng)的值是否符合要求,對(duì)值進(jìn)行過(guò)濾和矯正,防止人為打開(kāi)配置文件修改后填入了異常的值,比如定時(shí)器的間隔為0,要重新糾正設(shè)定為合法的值。
6、帶中文的初始值用QString::fromUtf8包起來(lái),比如QString::fromUtf8(“管理員”)。
7、帶中文的配置項(xiàng)要設(shè)置配置文件編碼為 utf-8,set.setIniCodec(“utf-8”)。
Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)的圖3
三、全局變量
全局變量管理類 appdata.h 用來(lái)設(shè)置項(xiàng)目中用到的所有全局變量。
1、比如當(dāng)前用戶/系統(tǒng)是否鎖定等,這樣可以在任意的編碼位置使用該變量進(jìn)行判斷處理。
2、可以將UI界面中的導(dǎo)航欄寬高、按鈕大小、圖標(biāo)大小等變量放在這,系統(tǒng)啟動(dòng)后判斷分辨率等來(lái)設(shè)定不同的值。
四、全局事件中轉(zhuǎn)處理
全局事件中轉(zhuǎn)處理類 appevent.h 用來(lái)中轉(zhuǎn)系統(tǒng)中各種跨多個(gè)UI以及多個(gè)類的事件。
1、此類必須是全局單例類,便于全局統(tǒng)一使用。
2、比如類a的父類是b,類b的父類是c,現(xiàn)在有個(gè)信號(hào)要發(fā)給類d,在沒(méi)有事件中轉(zhuǎn)處理的情況下的做法是將a信號(hào)發(fā)給b,b再發(fā)給c,c再發(fā)給d,如果父類嵌套層級(jí)越多越復(fù)雜,代碼越難管理。
3、將類a的信號(hào)發(fā)給appevent類,然后類d直接關(guān)聯(lián)appevent類進(jìn)行處理就行。
4、項(xiàng)目越大,會(huì)越發(fā)現(xiàn)事件中轉(zhuǎn)處理的必要性,代碼清晰,管理方便。
Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)的圖4
五、全局程序初始化
全局程序初始化類 appinit.h 用來(lái)做一些程序啟動(dòng)后的初始化處理。
1、讀取配置文件。
2、設(shè)置全局字體。
3、設(shè)置全局樣式表,建議先讀取通用的樣式表,然后將額外的樣式表內(nèi)容加到后面一起設(shè)置。
4、設(shè)置項(xiàng)目編碼。
5、設(shè)置翻譯文件,可以加載多個(gè),包括qt內(nèi)置的qt_zh_CN.qm,用戶自己的翻譯文件等。
6、初始化隨機(jī)數(shù)種子。
7、新建項(xiàng)目中需要的目錄,防止沒(méi)有目錄無(wú)法保存文件到目錄。
8、初始化數(shù)據(jù)庫(kù),包括打開(kāi)數(shù)據(jù)庫(kù),載入基礎(chǔ)數(shù)據(jù)比如用戶表、設(shè)備表等。
9、啟動(dòng)日志輸出類用來(lái)啟動(dòng)日志服務(wù)。
10、啟動(dòng)運(yùn)行時(shí)間記錄類用來(lái)記錄每次軟件運(yùn)行開(kāi)始時(shí)間和結(jié)束時(shí)間。
11、關(guān)聯(lián)全局事件過(guò)濾器處理自定義無(wú)邊框UI拖動(dòng)、全局按鍵處理等。

六、全局通用類

1、調(diào)試日志輸出類 savelog.h 用來(lái)啟動(dòng)日志服務(wù),可以將日志輸出到文件或者網(wǎng)絡(luò)打印輸出。
2、運(yùn)行時(shí)間記錄類 saveruntime.h 用來(lái)記錄每次軟件運(yùn)行開(kāi)始時(shí)間和結(jié)束時(shí)間。
3、圖形字體類 iconfont.h 用來(lái)設(shè)置圖形字體圖標(biāo)。



深圳市優(yōu)飛迪科技有限公司成立于2010年,是一家專注于產(chǎn)品開(kāi)發(fā)平臺(tái)解決方案與物聯(lián)網(wǎng)技術(shù)開(kāi)發(fā)的國(guó)家級(jí)高新技術(shù)企業(yè)。

十多年來(lái),優(yōu)飛迪科技在數(shù)字孿生、工業(yè)軟件尤其仿真技術(shù)、物聯(lián)網(wǎng)技術(shù)開(kāi)發(fā)等領(lǐng)域積累了豐富的經(jīng)驗(yàn),并在這些領(lǐng)域擁有數(shù)十項(xiàng)獨(dú)立自主的知識(shí)產(chǎn)權(quán)。同時(shí),優(yōu)飛迪科技也與國(guó)際和國(guó)內(nèi)的主要頭部工業(yè)軟件廠商建立了戰(zhàn)略合作關(guān)系,能夠?yàn)榭蛻籼峁┩暾漠a(chǎn)品開(kāi)發(fā)平臺(tái)解決方案。

優(yōu)飛迪科技技術(shù)團(tuán)隊(duì)實(shí)力雄厚,主要成員均來(lái)自于國(guó)內(nèi)外頂尖學(xué)府、并在相關(guān)領(lǐng)域有豐富的工作經(jīng)驗(yàn),能為客戶提供“全心U+端到端服務(wù)”。

Qt項(xiàng)目架構(gòu)經(jīng)驗(yàn)總結(jié)的圖5

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP