本文描述一個以前小生在工作中遇到的一個Qt小坑:在使用Qt完成項目開發后,需要將其運行在嵌入式linux平臺上,在設備啟動后,經uboot引導和linux內核后,直接進入Qt應用程序。然而在進入Qt應用程序時,出現了卡頓的現象(也不能說是卡頓,就是在顯示窗體的時候效果有點瑕疵),類似于下圖所示效果:
(注:屏幕閃光是由于拍攝的影響)
注:使用的Qt版本為5.12.9
在Qt開發中,顯示窗體有常見的幾種方式:
【方式一】
【方式二】
以上兩種代碼寫法,在實際嵌入式linux+Qt中,在顯示窗體時都會先出現一個小圖形界面然后再填充全屏,看上去就像卡頓了一樣。
剛開始,懷疑是處理器性能問題,在軟件啟動前期加載受到了影響,但是所用的處理器在性能上應該還可以,于是乎,寫了一個最簡單的Qt demo來測試,發現問題同樣存在,于是定位問題在Qt程序設計上。于是換了一種寫法:
【方式三】
使用resize()重新設置大小,上述代碼中1280和800是實際屏幕的像素比,然后使用show()顯示窗體。通過這種方式,顯示窗體的效果就變得好些了。效果如下:
(注:屏幕閃光是由于拍攝的影響)
在Qt中,顯示窗體主要有以下幾個函數:
voidQWidget::show() voidQWidget::showFullScreen() voidQWidget::showMaximized() voidQWidget::showMinimized() voidQWidget::showNormal()
上述函數中,以下四個函數在Windows平臺效果明顯,運行也正常,在linux平臺上,大概率會有些問題:
showFullScreen():以全屏模式顯示小部件。
showMaximized():顯示最大化的小部件。
showMinimized():顯示最小化的小部件。
showNormal():顯示正常的小部件。
可見,『方式三』的寫法,運行出來的窗體顯示效果要好很多了。
審核編輯:劉清
-
嵌入式
+關注
關注
5071文章
19026瀏覽量
303497 -
Uboot
+關注
關注
4文章
125瀏覽量
28168 -
LINUX內核
+關注
關注
1文章
316瀏覽量
21619
原文標題:經驗 | 如何破Qt窗體的“卡頓”
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論