本文描述一個(gè)以前小生在工作中遇到的一個(gè)Qt小坑:在使用Qt完成項(xiàng)目開發(fā)后,需要將其運(yùn)行在嵌入式linux平臺上,在設(shè)備啟動后,經(jīng)uboot引導(dǎo)和linux內(nèi)核后,直接進(jìn)入Qt應(yīng)用程序。然而在進(jìn)入Qt應(yīng)用程序時(shí),出現(xiàn)了卡頓的現(xiàn)象(也不能說是卡頓,就是在顯示窗體的時(shí)候效果有點(diǎn)瑕疵),類似于下圖所示效果:
(注:屏幕閃光是由于拍攝的影響)
注:使用的Qt版本為5.12.9
在Qt開發(fā)中,顯示窗體有常見的幾種方式:
【方式一】
【方式二】
以上兩種代碼寫法,在實(shí)際嵌入式linux+Qt中,在顯示窗體時(shí)都會先出現(xiàn)一個(gè)小圖形界面然后再填充全屏,看上去就像卡頓了一樣。
剛開始,懷疑是處理器性能問題,在軟件啟動前期加載受到了影響,但是所用的處理器在性能上應(yīng)該還可以,于是乎,寫了一個(gè)最簡單的Qt demo來測試,發(fā)現(xiàn)問題同樣存在,于是定位問題在Qt程序設(shè)計(jì)上。于是換了一種寫法:
【方式三】
使用resize()重新設(shè)置大小,上述代碼中1280和800是實(shí)際屏幕的像素比,然后使用show()顯示窗體。通過這種方式,顯示窗體的效果就變得好些了。效果如下:
(注:屏幕閃光是由于拍攝的影響)
在Qt中,顯示窗體主要有以下幾個(gè)函數(shù):
voidQWidget::show() voidQWidget::showFullScreen() voidQWidget::showMaximized() voidQWidget::showMinimized() voidQWidget::showNormal()
上述函數(shù)中,以下四個(gè)函數(shù)在Windows平臺效果明顯,運(yùn)行也正常,在linux平臺上,大概率會有些問題:
showFullScreen():以全屏模式顯示小部件。
showMaximized():顯示最大化的小部件。
showMinimized():顯示最小化的小部件。
showNormal():顯示正常的小部件。
可見,『方式三』的寫法,運(yùn)行出來的窗體顯示效果要好很多了。
審核編輯:劉清
-
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317606 -
Uboot
+關(guān)注
關(guān)注
4文章
129瀏覽量
29100 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
317瀏覽量
22405
原文標(biāo)題:經(jīng)驗(yàn) | 如何破Qt窗體的“卡頓”
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
求大神賜教:Labview程序,運(yùn)行3-4小時(shí),就會出現(xiàn)卡頓現(xiàn)象
VeriStand運(yùn)行時(shí)出現(xiàn)卡頓現(xiàn)象,如何解決?
運(yùn)行VeriStand的過程中出現(xiàn)卡頓現(xiàn)象,如何解決?
通過VeriStand加載MATLAB模型到實(shí)時(shí)仿真機(jī),VeriStand出現(xiàn)卡頓現(xiàn)象
VeriStand出現(xiàn)卡頓現(xiàn)象
在下使用LABVIEW時(shí)遇到,當(dāng)程序運(yùn)行時(shí),前面板波形圖表顯示出現(xiàn)卡頓現(xiàn)象是怎么回事呢?
在匿名四軸上位機(jī)上顯示時(shí)出現(xiàn)卡頓現(xiàn)象
STM32+uc/os II+uc/gui顯示出現(xiàn)白屏卡頓現(xiàn)象
Qt編譯以前的應(yīng)用程序缺失請問怎么解決呢
NUC123SD4AN0連接IMAC出現(xiàn)回放卡頓和斷續(xù)現(xiàn)象怎么解決?
基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā)
基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā)
解決蘋果ios10.3.2耗電快及卡頓現(xiàn)象的方法
嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個(gè)嵌入式QT應(yīng)用程序

A40i應(yīng)用筆記 | Qt應(yīng)用程序開發(fā)工具 Qt Creator的安裝及使用

評論