Qtshow一个页面显示巨慢

咖啡熊猫 2017-09-26 10:14:54
如图,有dialog A ,B, C。
问题场景是这样:从A到B,就简单的hide掉A,showB,对B界面什么都不操作返回A界面(hideB,showA)正常,但是B界面有一个表格,只要对表格进行删改等操作返回A界面就要等A界面刷半天(估计6-7秒,这怎么能忍受),不是崩溃,就弹个框,但是框里面的内容是灰的,什么都不显示。但其实返回A界面的时候,B界面的所有操作或者其他动作都做完了(表格等都已经正常显示了),没有开线程等。
而且我发现show太慢,先showMinized,再showNormal结果又正常了,求各位大哥不吝赐教。。这到底是什么原因?两个页面具体的代码太多了,我就不贴上来了。就贴个B返回A界面的代码。
void cGuideAlterNeedleUi::on_pushButtonBack_clicked()
{
// mPtrGuideInputUi->show();
mPtrGuideInputUi->showMinimized();
mPtrGuideInputUi->showNormal();
this->hide();

}

就是一个按钮的槽。

...全文
1495 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
待续_1006 2019-07-23
  • 打赏
  • 举报
回复
学习了
csdnwingwu 2019-07-19
  • 打赏
  • 举报
回复
把 this->hide(); 注释掉, 看看mPtrGuideInputUi 窗口 要多长时间显示
skyhyko 2019-07-18
  • 打赏
  • 举报
回复
最近我也碰到show不出来的情况,这个时候你可以试一下show后调用QAppliaction::processEvents()
因为show是一个事件,线程在有其他耗时操作时(大文件读写、复制等)并不会立马调用show事件。
咖啡熊猫 2017-09-30
  • 打赏
  • 举报
回复
引用 6 楼 u013917429 的回复:
建议不要两个界面show hide的 你可以用一个stacked widget把两个窗口放一起。setCurrentWidget()切换两个窗口就好
很感谢,原本不知道有stacled widget这个东西,请问一下多个界面的show或者hide,特别是界面比较多的情况下可能有什么意外情况?原因是什么?
微风v5 2017-09-29
  • 打赏
  • 举报
回复
建议不要两个界面show hide的 你可以用一个stacked widget把两个窗口放一起。setCurrentWidget()切换两个窗口就好
张小飞Official 2017-09-28
  • 打赏
  • 举报
回复
引用 4 楼 daizhiyan1 的回复:
[quote=引用 3 楼 u010370871 的回复:] [quote=引用 2 楼 daizhiyan1 的回复:] [quote=引用 1 楼 u010370871 的回复:] 在show里边打时间log,看看慢到哪个函数,然后再具体分析
可以具体一点吗?能给个示例代码吗?有点没看懂。 [/quote] 两行代码之间把时间写到文件里,然后对比时间不就可以了么[/quote] 知道你的意思了,用log文件记录这两行之间跑的代码加时间,比较时间,我试试哈。 [/quote] 对的,这样定位到show函数哪里慢了,如果不是show慢那就是你原来的处理逻辑慢
咖啡熊猫 2017-09-27
  • 打赏
  • 举报
回复
引用 3 楼 u010370871 的回复:
[quote=引用 2 楼 daizhiyan1 的回复:] [quote=引用 1 楼 u010370871 的回复:] 在show里边打时间log,看看慢到哪个函数,然后再具体分析
可以具体一点吗?能给个示例代码吗?有点没看懂。 [/quote] 两行代码之间把时间写到文件里,然后对比时间不就可以了么[/quote] 知道你的意思了,用log文件记录这两行之间跑的代码加时间,比较时间,我试试哈。
咖啡熊猫 2017-09-26
  • 打赏
  • 举报
回复
引用 1 楼 u010370871 的回复:
在show里边打时间log,看看慢到哪个函数,然后再具体分析
可以具体一点吗?能给个示例代码吗?有点没看懂。
张小飞Official 2017-09-26
  • 打赏
  • 举报
回复
在show里边打时间log,看看慢到哪个函数,然后再具体分析
张小飞Official 2017-09-26
  • 打赏
  • 举报
回复
引用 2 楼 daizhiyan1 的回复:
[quote=引用 1 楼 u010370871 的回复:] 在show里边打时间log,看看慢到哪个函数,然后再具体分析
可以具体一点吗?能给个示例代码吗?有点没看懂。 [/quote] 两行代码之间把时间写到文件里,然后对比时间不就可以了么

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧