用Qt撰寫的圖形界面程式,界面使用了很多圖片,使用資源檔案和setStyleSheet方式顯示的,分別在Windows和ARM上運行,在Windows上記憶體大概80M,能正常啟動,但是在ARM上,不能正常啟動,報錯:QImage: out of memory, returning null image,去掉部分界面,可以啟動,但是記憶體占用也很大,耗時非常久,請問什么原因?
uj5u.com熱心網友回復:
Windows上80M,ARM上也差不多的,沒有代碼,幫不了。考慮記憶體泄漏吧,比如event中呼叫了event,函式無限制呼叫了自身之類的。uj5u.com熱心網友回復:
那就一步步排查是哪個界面出的問題uj5u.com熱心網友回復:
圖片如果很少很小,放在資源里無所謂;圖片總量龐大的話,把它們從可執行檔案的資源中拿出去,單獨建立一個目錄存放圖片吧。uj5u.com熱心網友回復:
優化,和硬體也有一定的關系吧uj5u.com熱心網友回復:
具體使用了多少圖片都是怎么用的
貼出來大家給你分析
uj5u.com熱心網友回復:
第一,解析度能顯示下來;第二,記憶體記得釋放,不要泄露。uj5u.com熱心網友回復:
簡單說就是:少用半透明,少用不規則形狀,動態創建/關閉,簡單效果用QSS替換。詳細就是:
資源檔案太多的時候考慮一下不要在啟動的時候就創建太多界面。每次需要用到界面的時候new出來,不用的時候close掉而不是hide。另外資源檔案可以根據實際上要顯示的大小用QImage處理一下再set到控制元件上去。有些簡單效果的圖片比如漸變色什么的完全可以用QPainter或者QSS去實作。不過這樣也有壞處,每次打開一個新界面的時候都需要一定時間。 另外圖片如果是PNG格式的耗掉的記憶體會比JPG格式的大很多,所以少用。 然后就是視窗和控制元件了,同樣的界面,圓角和非圓角都有一定的差距。
uj5u.com熱心網友回復:
看你板子記憶體多少?結合實際應用分析吧uj5u.com熱心網友回復:
是否可以講的更詳細點?
我把qrc檔案轉成rcc檔案運行時加載,可執行檔案不到1M,但加載主界面后,行程占用記憶體超過500M,不知道怎么回事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/50414.html
標籤:Qt
上一篇:安卓新手求大神幫幫孩子吧
