0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt应用程序出现卡顿的现象怎么解决呢

工程师邓生 来源:嵌入式小生 作者:iriczhao 2022-09-23 10:38 次阅读

本文描述一个以前小生在工作中遇到的一个Qt小坑:在使用Qt完成项目开发后,需要将其运行在嵌入式linux平台上,在设备启动后,经uboot引导和linux内核后,直接进入Qt应用程序。然而在进入Qt应用程序时,出现了卡顿的现象(也不能说是卡顿,就是在显示窗体的时候效果有点瑕疵),类似于下图所示效果:

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

(注:屏幕闪光是由于拍摄的影响)

注:使用的Qt版本为5.12.9

在Qt开发中,显示窗体有常见的几种方式:

【方式一】

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

【方式二】

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

以上两种代码写法,在实际嵌入式linux+Qt中,在显示窗体时都会先出现一个小图形界面然后再填充全屏,看上去就像卡顿了一样。

刚开始,怀疑是处理器性能问题,在软件启动前期加载受到了影响,但是所用的处理器在性能上应该还可以,于是乎,写了一个最简单的Qt demo来测试,发现问题同样存在,于是定位问题在Qt程序设计上。于是换了一种写法:

【方式三】

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

使用resize()重新设置大小,上述代码中1280和800是实际屏幕的像素比,然后使用show()显示窗体。通过这种方式,显示窗体的效果就变得好些了。效果如下:

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

(注:屏幕闪光是由于拍摄的影响)

在Qt中,显示窗体主要有以下几个函数:

voidQWidget::show()

voidQWidget::showFullScreen()

voidQWidget::showMaximized()

voidQWidget::showMinimized()

voidQWidget::showNormal()

上述函数中,以下四个函数在Windows平台效果明显,运行也正常,在linux平台上,大概率会有些问题:

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

可见,『方式三』的写法,运行出来的窗体显示效果要好很多了。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18280

    浏览量

    288377
  • Uboot
    +关注

    关注

    4

    文章

    123

    浏览量

    27863
  • LINUX内核
    +关注

    关注

    1

    文章

    311

    浏览量

    21387

原文标题:经验 | 如何破Qt窗体的“卡顿”

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编写第一个QT程序

    学习一种编程语言或编程环境,通常会先编写一个“Hello World”程序。我们也用 Qt Creator 编写一个“Hello World”程序,以初步了解 Qt Creator 设
    发表于 11-21 10:41 733次阅读

    求大神赐教:Labview程序,运行3-4小时,就会出现现象

    求大神赐教:本人是刚刚入门者。Labview程序生成exe文件后,在Windows系统下运行3-4小时,就会出现。本程序涉及到上位机与下
    发表于 11-22 16:41

    VeriStand运行时出现现象,如何解决?

    、History Length为50 sec、Update Rate为10Hz。问题现象:然后运行该工程到仿真机中,界面一开始就会出现现象
    发表于 06-06 20:39

    运行VeriStand的过程中出现现象,如何解决?

    、History Length为50 sec、Update Rate为10Hz。问题现象:然后运行该工程到仿真机中,界面一开始就会出现现象
    发表于 06-09 10:25

    通过VeriStand加载MATLAB模型到实时仿真机,VeriStand出现现象

    、History Length为50 sec、Update Rate为10Hz。问题现象:然后运行该工程到仿真机中,界面一开始就会出现现象
    发表于 06-09 10:28

    VeriStand出现现象

    、History Length为50 sec、Update Rate为10Hz。问题现象:然后运行该工程到仿真机中,界面一开始就会出现现象
    发表于 06-09 10:29

    在下使用LABVIEW时遇到,当程序运行时,前面板波形图表显示出现现象是怎么回事

    各位大神,在下使用LABVIEW时遇到,当程序运行时,前面板波形图表显示出现现象,即波形图表内显示的波形静止几秒后更新一次,然后再静止几
    发表于 04-26 19:26

    在匿名四轴上位机上显示时出现现象

    出现这一问题的程序是我在F4提供的例程上稍作修改写的程序,由于还未学习LCD,删除了有关LCD的代码。主循环中的代码比例程中的更少,而且也没有延时函数影响。为什么最后在匿名四轴上位机上显示时
    发表于 05-20 22:41

    STM32+uc/os II+uc/gui显示出现白屏现象

    之前移植了uc/os II,创建了多个任务,包括LCD显示任务,均能正常运行!后面移植了uc/gui,将LCD显示任务中的显示函数换成uCGUI的函数,显示出现白屏现象!!!!之前
    发表于 03-18 04:35

    Qt编译以前的应用程序出现找不到 -lGLESv2 -lQt5Sql -lQt5Netword -lQt5Core怎么解决

    Qt 编译以前的应用程序出现找不到 -lGLESv2 -lQt5Sql -lQt5Netword -lQt5Core 这个到底是Qt的问题,还是应用
    发表于 01-04 07:03

    Qt编译以前的应用程序缺失请问怎么解决

    Qt 编译以前的应用程序出现找不到 -lGLESv2 -lQt5Sql -lQt5Netword -lQt5Core 这个到底是Qt的问题,还是应用
    发表于 01-14 08:32

    NUC123SD4AN0连接IMAC出现回放和断续现象怎么解决?

    我使用NUC123SD4AN0通过SPI,I2S连接AUDIO DSP, DSO接一个AKM CODEC.这个设备主要相当于一个AUDIO MIC设备,当USB连接WINDOWS PC的时候,设备工作正常,但是当连接APPLE MAC电脑的时候,出现明显的回放
    发表于 06-15 07:10

    基于QT/Embedded的可变情报板应用程序开发

    基于QT/Embedded的可变情报板应用程序开发 QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT开发库
    发表于 03-03 09:36 730次阅读

    基于QT/Embedded的可变情报板应用程序开发

    基于QT/Embedded的可变情报板应用程序开发  0引言   QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT
    发表于 03-09 10:39 836次阅读

    嵌入式Linux应用程序开发-(1)第一个嵌入式QT应用程序

    第一个嵌入式QT应用程序在成功安装 Qt Creator 开发环境后,我们通过一个简单的嵌入式Qt应用程序,来说明一下如何构建和编译一个
    发表于 11-01 17:21 16次下载
    嵌入式Linux<b class='flag-5'>应用程序</b>开发-(1)第一个嵌入式<b class='flag-5'>QT</b><b class='flag-5'>应用程序</b>