首頁>技術>

昨天我遇到了一個很奇怪的bug,事情經過是這樣的,我用Qt編寫了一個動態庫,這裡稱之為lib,lib中有多個介面,相應的我也在這些介面中加了一些圖示。首先,我是在Windows下使用Qt MSVC編譯器編譯的,libA編譯完成以後,我透過另一個程式(這裡稱之為app)來呼叫它,在app中透過呼叫lib的介面來顯示lib中的介面,此時一切正常,介面、圖示、功能都和預期的一樣。

然後我將上述兩個工程複製到Linux系統下,使用Qt gcc進行編譯,編譯也沒問題,執行起來介面、功能也一切正常,但是所有的圖示都不顯示。

此時,我並不覺得是什麼大問題,感覺馬上就能解決掉,於是我先檢查了一下資源是否複製完整,然後執行qmake,再重新構建。執行一下,問題還在。

還是不慌,此時我想明確一下問題是出在動態庫lib上還是應用程式app上,於是我就用Qt新建了一個介面程式,新增庫lib,包含標頭檔案,然後介面呼叫,編譯執行後,圖示都顯示正常,沒有出現任何問題。於是就確定了問題出在了app上。

然後我就去檢查了一下依賴庫,是不是缺少imageformats資料夾,沒發現問題。於是就開始檢查程式碼。因為我在app中使用了qss進行樣式的設定,以我以前的經驗來看,可能是樣式表再作怪,如是我註釋了樣式表設定程式碼,編譯執行後,問題還在。

奇了個大怪,怎麼會這樣,不信邪的我,又打開了上面剛建立的測試動態庫是否正常的工程,新增Qt資原始檔,按照習慣命名為images,然後往裡面新增相同的圖片,然後編譯執行,動態庫中的介面談了出來,但是圖示不見了。問題就出現在這個images.qrc中,離真相已經很近了,心情還有點小激動呢。

那麼images.qrc有什麼問題呢,首先圖片肯定不會對程式造成影響,那麼就是images.qrc本身的原因,再看一下lib下的資原始檔也叫images.qrc,難道是重名的原因,將app中的images.qrc改為app_images.qrc,重新編譯執行,圖標出現,問題解決。

16
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 谷歌Protobuf python教程1快速入門