0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Qt應(yīng)用程序出現(xiàn)卡頓的現(xiàn)象怎么解決呢

工程師鄧生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-09-23 10:38 ? 次閱讀

本文描述一個(gè)以前小生在工作中遇到的一個(gè)Qt小坑:在使用Qt完成項(xiàng)目開發(fā)后,需要將其運(yùn)行在嵌入式linux平臺(tái)上,在設(shè)備啟動(dòng)后,經(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)瑕疵),類似于下圖所示效果:

60a964d2-3ad6-11ed-9e49-dac502259ad0.gif

(注:屏幕閃光是由于拍攝的影響)

注:使用的Qt版本為5.12.9

在Qt開發(fā)中,顯示窗體有常見的幾種方式:

【方式一】

6153ddc2-3ad6-11ed-9e49-dac502259ad0.png

【方式二】

6186c44e-3ad6-11ed-9e49-dac502259ad0.png

以上兩種代碼寫法,在實(shí)際嵌入式linux+Qt中,在顯示窗體時(shí)都會(huì)先出現(xiàn)一個(gè)小圖形界面然后再填充全屏,看上去就像卡頓了一樣。

剛開始,懷疑是處理器性能問題,在軟件啟動(dòng)前期加載受到了影響,但是所用的處理器在性能上應(yīng)該還可以,于是乎,寫了一個(gè)最簡(jiǎn)單的Qt demo來測(cè)試,發(fā)現(xiàn)問題同樣存在,于是定位問題在Qt程序設(shè)計(jì)上。于是換了一種寫法:

【方式三】

61a49f0a-3ad6-11ed-9e49-dac502259ad0.png

使用resize()重新設(shè)置大小,上述代碼中1280和800是實(shí)際屏幕的像素比,然后使用show()顯示窗體。通過這種方式,顯示窗體的效果就變得好些了。效果如下:

61bb2658-3ad6-11ed-9e49-dac502259ad0.gif

(注:屏幕閃光是由于拍攝的影響)

在Qt中,顯示窗體主要有以下幾個(gè)函數(shù):

voidQWidget::show()

voidQWidget::showFullScreen()

voidQWidget::showMaximized()

voidQWidget::showMinimized()

voidQWidget::showNormal()

上述函數(shù)中,以下四個(gè)函數(shù)在Windows平臺(tái)效果明顯,運(yùn)行也正常,在linux平臺(tái)上,大概率會(huì)有些問題:

showFullScreen():以全屏模式顯示小部件。

655a14ae-3ad6-11ed-9e49-dac502259ad0.png


showMaximized():顯示最大化的小部件。

65969c6c-3ad6-11ed-9e49-dac502259ad0.png

showMinimized():顯示最小化的小部件。

65b92bf6-3ad6-11ed-9e49-dac502259ad0.png


showNormal():顯示正常的小部件。

65e7ebd0-3ad6-11ed-9e49-dac502259ad0.png

可見,『方式三』的寫法,運(yùn)行出來的窗體顯示效果要好很多了。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19123

    瀏覽量

    305143
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    125

    瀏覽量

    28229
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21650

原文標(biāo)題:經(jīng)驗(yàn) | 如何破Qt窗體的“卡頓”

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    求大神賜教:Labview程序,運(yùn)行3-4小時(shí),就會(huì)出現(xiàn)現(xiàn)象

    求大神賜教:本人是剛剛?cè)腴T者。Labview程序生成exe文件后,在Windows系統(tǒng)下運(yùn)行3-4小時(shí),就會(huì)出現(xiàn)。本程序涉及到上位機(jī)與下
    發(fā)表于 11-22 16:41

    VeriStand運(yùn)行時(shí)出現(xiàn)現(xiàn)象,如何解決?

    、History Length為50 sec、Update Rate為10Hz。問題現(xiàn)象:然后運(yùn)行該工程到仿真機(jī)中,界面一開始就會(huì)出現(xiàn)現(xiàn)象
    發(fā)表于 06-06 20:39

    運(yùn)行VeriStand的過程中出現(xiàn)現(xiàn)象,如何解決?

    、History Length為50 sec、Update Rate為10Hz。問題現(xiàn)象:然后運(yùn)行該工程到仿真機(jī)中,界面一開始就會(huì)出現(xiàn)現(xiàn)象
    發(fā)表于 06-09 10:25

    通過VeriStand加載MATLAB模型到實(shí)時(shí)仿真機(jī),VeriStand出現(xiàn)現(xiàn)象

    、History Length為50 sec、Update Rate為10Hz。問題現(xiàn)象:然后運(yùn)行該工程到仿真機(jī)中,界面一開始就會(huì)出現(xiàn)現(xiàn)象
    發(fā)表于 06-09 10:28

    VeriStand出現(xiàn)現(xiàn)象

    、History Length為50 sec、Update Rate為10Hz。問題現(xiàn)象:然后運(yùn)行該工程到仿真機(jī)中,界面一開始就會(huì)出現(xiàn)現(xiàn)象
    發(fā)表于 06-09 10:29

    在下使用LABVIEW時(shí)遇到,當(dāng)程序運(yùn)行時(shí),前面板波形圖表顯示出現(xiàn)現(xiàn)象是怎么回事?

    各位大神,在下使用LABVIEW時(shí)遇到,當(dāng)程序運(yùn)行時(shí),前面板波形圖表顯示出現(xiàn)現(xiàn)象,即波形圖表內(nèi)顯示的波形靜止幾秒后更新一次,然后再靜止幾
    發(fā)表于 04-26 19:26

    在匿名四軸上位機(jī)上顯示時(shí)出現(xiàn)現(xiàn)象

    出現(xiàn)這一問題的程序是我在F4提供的例程上稍作修改寫的程序,由于還未學(xué)習(xí)LCD,刪除了有關(guān)LCD的代碼。主循環(huán)中的代碼比例程中的更少,而且也沒有延時(shí)函數(shù)影響。為什么最后在匿名四軸上位機(jī)上顯示時(shí)
    發(fā)表于 05-20 22:41

    STM32+uc/os II+uc/gui顯示出現(xiàn)白屏現(xiàn)象

    之前移植了uc/os II,創(chuàng)建了多個(gè)任務(wù),包括LCD顯示任務(wù),均能正常運(yùn)行!后面移植了uc/gui,將LCD顯示任務(wù)中的顯示函數(shù)換成uCGUI的函數(shù),顯示出現(xiàn)白屏現(xiàn)象!?。。≈?/div>
    發(fā)表于 03-18 04:35

    Qt編譯以前的應(yīng)用程序缺失請(qǐng)問怎么解決

    Qt 編譯以前的應(yīng)用程序出現(xiàn)找不到 -lGLESv2 -lQt5Sql -lQt5Netword -lQt5Core 這個(gè)到底是Qt的問題,還是應(yīng)用
    發(fā)表于 01-14 08:32

    NUC123SD4AN0連接IMAC出現(xiàn)回放和斷續(xù)現(xiàn)象怎么解決?

    我使用NUC123SD4AN0通過SPI,I2S連接AUDIO DSP, DSO接一個(gè)AKM CODEC.這個(gè)設(shè)備主要相當(dāng)于一個(gè)AUDIO MIC設(shè)備,當(dāng)USB連接WINDOWS PC的時(shí)候,設(shè)備工作正常,但是當(dāng)連接APPLE MAC電腦的時(shí)候,出現(xiàn)明顯的回放
    發(fā)表于 06-15 07:10

    基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā)

    基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā) QT是奇趣科技推出的一種多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它包括QT開發(fā)庫
    發(fā)表于 03-03 09:36 ?779次閱讀

    基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā)

    基于QT/Embedded的可變情報(bào)板應(yīng)用程序開發(fā)  0引言   QT是奇趣科技推出的一種多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它包括QT
    發(fā)表于 03-09 10:39 ?919次閱讀

    解決蘋果ios10.3.2耗電快及現(xiàn)象的方法

    最近,又有了一個(gè)困惑無數(shù)果粉的問題,有果粉反映,自從更新了ios10.3.2之后,手機(jī)就耗電十分快,甚至還會(huì)出現(xiàn)現(xiàn)象。所以,要怎樣解決
    發(fā)表于 04-15 10:56 ?9359次閱讀

    嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個(gè)嵌入式QT應(yīng)用程序

    第一個(gè)嵌入式QT應(yīng)用程序在成功安裝 Qt Creator 開發(fā)環(huán)境后,我們通過一個(gè)簡(jiǎn)單的嵌入式Qt應(yīng)用程序,來說明一下如何構(gòu)建和編譯一個(gè)
    發(fā)表于 11-01 17:21 ?16次下載
    嵌入式Linux<b class='flag-5'>應(yīng)用程序</b>開發(fā)-(1)第一個(gè)嵌入式<b class='flag-5'>QT</b><b class='flag-5'>應(yīng)用程序</b>

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

    簡(jiǎn)介本文主要介紹Qt應(yīng)用程序開發(fā)工具QtCreator的安裝及使用飛凌移植好的Qt的SDK來搭建Qt應(yīng)用程序開發(fā)環(huán)境的方法。Ubuntu環(huán)境
    的頭像 發(fā)表于 02-25 10:03 ?1483次閱讀
    A40i應(yīng)用筆記 | <b class='flag-5'>Qt</b><b class='flag-5'>應(yīng)用程序</b>開發(fā)工具 <b class='flag-5'>Qt</b> Creator的安裝及使用