Qt開發總結(12) 資源系統

2021-10-01 06:01:54 字數 2159 閱讀 1157

這篇筆記想著把最近在開發過程中的遇到的一些新的認識總結一下,關於qt的資源系統。之前我寫qt的風格是完全用**寫介面,控制項和布局都是乙個個new出來,但是在實際開發中,還是有人喜歡用qdesigner設計,這無可厚非。另外,美化這方面,大家都喜歡用qss,不管是在qdesigner中設定還是在**中寫,原理都是一樣的。在新建qt工程的時候一定會看見乙個qrc檔案,或許很長時間你並不清楚它的作用,今天我要說是關於qt qrc檔案相關原理和作用。

qt 的資源系統用於儲存應用程式的可執行二進位制檔案,它採用平台無關的機制。當你的程式總需要這樣的一系列檔案(圖示、翻譯檔案甚至是資料檔案等)並且不想冒丟失某些檔案的風險時,這就顯得十分有用。資源系統基於 qmake、rcc(qt 資源編譯器) 和 qfile 之間的緊密合作。

qrc檔案被稱作資源集合檔案。與程式相關的資源在被指定在乙個 .qrc 檔案中,其基於 xml 的檔案格式列出了磁碟上的檔案,可以為它們指定乙個應用程式訪問資源時必須使用的資源名稱。下面給出乙個示例:

resource/image/background.png

resource/image/setup_hover.png

resource/image/play_hover.png

resource/image/play_normal.png

resource/image/setupbg_normal.png

resource/image/work_hover.png

resource/image/workbg_normal.png

值得注意的地方是,資源檔案需要與qrc檔案位於同一目錄下或者在該目錄的子目錄中。另外,如果qrc檔案中使用了字首(例如),使用qt designer新增圖示檔案是就是自動使用字首/new/prefix的,但是該路徑預設不存在。另外,程式可以使用與**樹中相同的名字訪問資源,需要帶有 「:/」 字首,或者有qrc scheme的url。

例如: :/imagesresource/image/background.png或者url qrc:///images/resource/image/background.png 都可以訪問在程式**樹中的background.png檔案。用檔案標籤的別名屬性可以改變訪問名稱:

resource/image/background.png

之後,在程式中就可以使用 :/background.png 訪問此檔案了。

該檔案可以用vs 或是文字編輯器編輯(比較方便),也可以用qtdesigner設計(個人覺得不怎麼好用)。

要把乙個資源編譯到二進位制檔案中, 必須在 .pro 中明確指定.qrc 檔案,以便於 qmake 可以正確處理。例如:

在vs或qt creator中用於原始碼是,只要按照上述方式的prefix(非必須)加檔案路徑的方式訪問資源檔案。在qtdesigner中,選擇某一控制項,需要在stylesheet中新增資源,然後選擇該qrc檔案,即可看到所有資源。你可以選擇相應的選項新增樣式表。

這裡特別提乙個問題,不論是在原始碼中通過setstylesheet還是想上述方法在qtdesigner中設定樣式表,請不要為父視窗設定背景。該函式只能用於設定有父視窗的子視窗的背景!如果乙個視窗沒有子視窗,則無法使用該函式來設定背景顏色或!!

對於乙個父視窗而言:如果我們用setstyleshette設定了其樣式,而對於其子視窗:如果沒有用同樣的函式來設定的話, 則其子視窗的樣式和其父視窗完全一致,亦即:其整合了自己父視窗的樣式!

對頂層視窗(沒有父視窗),其有若干個子視窗,則當我們用setstyleshette來設定這個頂層視窗的樣式後,該父視窗本身沒有任何變化,亦即設定沒有生效;而其子視窗:只要子視窗本身沒有用setstyleshette來設定自己的樣式表,則其就是用的自己父視窗的樣式表!!

所以,這裡我建議不論你的背景介面是否是父窗體,設定背景的話,建議用painter設定;介面上其他小控制項可以用stylesheet設定。painter的使用方法類似於:

void entranceform::paintevent(qpaintevent * e)

Qt資源使用方式及資源系統簡述

一般來說,資源檔案可以在資源收集檔案 qrc 中指定,包括字型檔案 ttf png 翻譯檔案 qm 以及qml頁面檔案 qml 等。qrc檔案中列出的資源檔案屬於應用程式源樹的一部分。在.qrc檔案中描述的資源檔案路徑也是相對於.qrc檔案所在的目錄的。當然,其中的資源檔案必須與.qrc檔案位於同一...

Qt4開發總結

對qt的認識和開發還只是剛剛起步,但作乙個階段學習的總結還是很必要的。c gui programming with qt 4,second edition,這裡講了qt程式的寫法,以及各個類的應用。inside qt series 深入介紹了qt的實現機制 1.qt的事件處理機制 事件起源 qt的s...

Qt開發 獲取系統日期

獲取系統當前時間並設定顯示格式 qdatetime current date time qdatetime currentdatetime qstring current date current date time.tostring yyyy mm dd hh mm ss ddd 例 2013 0...