【Qt5】频繁调用update()若干时间后无法自动重绘界面的问题
2018-03-29 10:06
603 查看
最近在项目中遇到了这样的问题:
程序的结构:主线程用于界面控制,线程1用于生成显示内容,线程2用于精确控制在正确的时刻控制界面显示生成的内容。
实现方式:在线程2中直接调用显示控件的update()方法,让主线程重绘。
运行效果:运行开始后的一段时间能够正常工作,但是几个小时后,会出现调用update()方法不能让控件重绘,显示控件一直显示旧的内容。但是可以通过缩放界面窗口等方法,让窗口自己重绘,能显示出新的内容。
解决办法:不在其他线程调用update(),而是在主线程中调用update(),目前修改后的程序已经连续运行了20小时,未卡死,已经满足了项目需求。
程序的结构:主线程用于界面控制,线程1用于生成显示内容,线程2用于精确控制在正确的时刻控制界面显示生成的内容。
实现方式:在线程2中直接调用显示控件的update()方法,让主线程重绘。
运行效果:运行开始后的一段时间能够正常工作,但是几个小时后,会出现调用update()方法不能让控件重绘,显示控件一直显示旧的内容。但是可以通过缩放界面窗口等方法,让窗口自己重绘,能显示出新的内容。
解决办法:不在其他线程调用update(),而是在主线程中调用update(),目前修改后的程序已经连续运行了20小时,未卡死,已经满足了项目需求。
相关文章推荐
- QT5.3无法自动调用incomingConnection函数的问题
- 完美解决PowerPoint 2007无法输入汉字及Office自动调用输入法的问题
- Ubuntu 16.04使用“从互联网自动获取”时间无法写入硬件BIOS的奇怪问题
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
- 若干时间后忘记的问题-----xp wince5.0 activesync 无法连接之记录
- tomcat自动启动时无法调用交互式程序的问题
- QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)
- 【Qt移植到linux】问题7 qt界面无法输入中文,中文不显示,乱码等问题
- Ubuntu 16.04中 Qt 5.6 中无法调用fcitx输入中文的问题
- 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
- Mysql中,update语句引起的时间戳自动更新问题
- ORACLE:SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
- 【Qt移植到linux】问题 qt界面无法输入中文,中文不显示,乱码等问题
- 小黑小波比.Ubuntu下Smart QQ无法登录问题,输入密码点击确认后自动回到登录界面
- SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题
- qt生成exe文件,界面的工具栏图片有qrc生成无法显示问题
- SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
- 解决VS2012(update3)静态编译的Qt5.1.1程序无法运行的问题