關於Qt Creater中資源檔案和檔案路徑的記錄

2021-08-09 02:51:19 字數 1174 閱讀 3218

想顯示一幅,建立了乙個資源檔案用來儲存路徑,使用qimage的load()方法載入(通過":/***.png"引用)時,一直不能正常顯示,也看了好些帖子,有這麼幾種說法:

a.在 ':'在「qrc」,即"qrc:***.png"——經測試,無效

b.看你的qt安裝目錄下是否有對應格式的dll檔案,我沒看到jpg、png的dll檔案,以為是預設不支援這些格式。看到qjpeg.dll,於是用jpeg檔案測試,結果還是不行。後來看到博主說jpg、png這幾張常見格式qt是預設支援的(必須的),所以也驗證了不是檔案格式的問題。

後來,突然想起來用絕對路徑試了下,發現是可以的(要注意斜槓'/'和反斜槓'\'的區別)(早點這麼測試下哪還有上面的懷疑格式的問題。。。真是蠢)

繼續摸索

最後問題定位到'./'的路徑問題上,在vs的**中'./'的路徑好像是當前檔案的路徑,而在qt creater中則是指生成的exe檔案的上級目錄,一般為debug和release資料夾所在目錄層。

於是把移動到該位置,程式中"./***.png"引用正常顯示。但是通過資源檔案的方式引用還是不行,後來發現建立資源檔案時預設放到了工程目錄下而不是這裡所需要的exe檔案上層目錄,於是重新建立乙個新的資源檔案到該目錄,經測試,引用成功(":/***.png")。

後來又測試:資源檔案仍需放在exe上級目錄,但用到的資源(、**等)分別放在和不放在資源檔案同級目錄下,結果都是可以的,也就是說只要能找到資源檔案的路徑,至於內部的各個檔案路徑就不用你操心了,這也是資源檔案的初衷吧。

另外,由於qt creater建立工程時預設是建立兩個資料夾,如這樣:

上面那個是工程所在資料夾,原始檔都在裡面,下面那個是構建生成的,存放各種中間生成檔案,通常我們習慣於乙個專案存放在乙個專案代號為名的資料夾下,而不是像qt這樣兩個資料夾,看上去很亂,我們可以通過更改預設的構建目錄來解決該問題:點我

總結:建立資源檔案時需放在exe檔案上級目錄,程式中引用時才能正確。

如有錯誤,請指正,謝謝。

/************************追加************************/

資源檔案中的檔案別名(alias),是包含了對應的檔名及其字尾的,所以在使用時直接這樣用就可以了:

假設將123.png的alias設為cat,則

方式1——(":/123.png")

方式2——(":/cat")

無需再加字尾。

執行緒中資源(一)

對於單執行緒來說,因為只有乙個實體,所以永遠都不需要擔心 兩個實體同時使用同乙個資源會發生什麼 這樣的問題。有了併發就可以同時做多件事情了,但是兩個或多個執行緒彼此互相干涉的問題也就出現了。這就是我們將要討論的事 不正確地訪問資源 如果幾個執行緒同時讀乙個資源,此時不會更改資源,這時也不會需要考慮這...

dashboard中資源釋放

針對我們在openstack中建立例項時,有的時候會出現一些狀態錯誤的例項,而直接刪除又無法刪除,這個時候可以選擇去資料庫中直接刪除。刪除資料庫時,最開始需要刪除的是instance表中相關的記錄,如果發現因為外來鍵的原因刪除失敗,則可根據提示資訊找到與之有外來鍵關聯的表中資訊,先將其刪除之後再去刪...

SWT中資源基類Resouce

swt資源釋放的方式 1.像顏色,字型,等一類資源,必須顯式釋放掉。需要注意的是 若字型或顏色是由系統產生的,則不需要程式設計師手動釋放。如獲取顏色 display.getsystemfont display.getsystemcolor id display.getsystemimage id 等...