新聞中心
昨天我遇到了一個(gè)很奇怪的bug,事情經(jīng)過是這樣的,我用Qt編寫了一個(gè)動(dòng)態(tài)庫,這里稱之為lib,lib中有多個(gè)界面,相應(yīng)的我也在這些界面中加了一些圖標(biāo)。首先,我是在Windows下使用Qt MSVC編譯器編譯的,libA編譯完成以后,我通過另一個(gè)程序(這里稱之為app)來調(diào)用它,在app中通過調(diào)用lib的接口來顯示lib中的界面,此時(shí)一切正常,界面、圖標(biāo)、功能都和預(yù)期的一樣。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
然后我將上述兩個(gè)工程拷貝到Linux系統(tǒng)下,使用Qt gcc進(jìn)行編譯,編譯也沒問題,運(yùn)行起來界面、功能也一切正常,但是所有的圖標(biāo)都不顯示。
此時(shí),我并不覺得是什么大問題,感覺馬上就能解決掉,于是我先檢查了一下資源是否拷貝完整,然后執(zhí)行qmake,再重新構(gòu)建。運(yùn)行一下,問題還在。
還是不慌,此時(shí)我想明確一下問題是出在動(dòng)態(tài)庫lib上還是應(yīng)用程序app上,于是我就用Qt新建了一個(gè)界面程序,添加庫lib,包含頭文件,然后接口調(diào)用,編譯運(yùn)行后,圖標(biāo)都顯示正常,沒有出現(xiàn)任何問題。于是就確定了問題出在了app上。
然后我就去檢查了一下依賴庫,是不是缺少imageformats文件夾,沒發(fā)現(xiàn)問題。于是就開始檢查代碼。因?yàn)槲以赼pp中使用了qss進(jìn)行樣式的設(shè)置,以我以前的經(jīng)驗(yàn)來看,可能是樣式表再作怪,如是我注釋了樣式表設(shè)置代碼,編譯運(yùn)行后,問題還在。
代碼查來查去,沒發(fā)現(xiàn)什么問題,于是開始重新梳理思路。圖標(biāo)不顯示,要么是資源問題,要么是依賴的問題,通過上面的檢查過程可以確定依賴沒問題,只能是資源出了問題。我的所有資源都添加在images.qrc中,我將images.qrc中的所有圖片資源全部刪除,然后重新添加,再次編譯后,問題還是沒解決。
奇了個(gè)大怪,怎么會(huì)這樣,不信邪的我,又打開了上面剛創(chuàng)建的測試動(dòng)態(tài)庫是否正常的工程,添加Qt資源文件,按照習(xí)慣命名為images,然后往里面添加相同的圖片,然后編譯運(yùn)行,動(dòng)態(tài)庫中的界面談了出來,但是圖標(biāo)不見了。問題就出現(xiàn)在這個(gè)images.qrc中,離真相已經(jīng)很近了,心情還有點(diǎn)小激動(dòng)呢。
那么images.qrc有什么問題呢,首先圖片肯定不會(huì)對程序造成影響,那么就是images.qrc本身的原因,再看一下lib下的資源文件也叫images.qrc,難道是重名的原因,將app中的images.qrc改為app_images.qrc,重新編譯運(yùn)行,圖標(biāo)出現(xiàn),問題解決。
至于具體原因,網(wǎng)上也沒查到確切的說法,但是因?yàn)橹挥蠰inux下有問題,且又是重名時(shí)出現(xiàn),那多少時(shí)鏈接出現(xiàn)了錯(cuò)誤,具體原因待我查到以后,放在評論中。
網(wǎng)站標(biāo)題:記一次耗時(shí)半天才解決的bug,我的圖標(biāo)到底去哪了?
標(biāo)題鏈接:http://www.fisionsoft.com.cn/article/dpdssec.html


咨詢
建站咨詢
