QT编程时,,界面不阻塞立刻显示
2017-05-02 15:40
330 查看
1.问题描述:
QT项目中,发现界面调用show()之后,并不能直接显示出界面,需要等msleep(3000)执行完以后,才可以。
2.原因分析:
QThread.msleep(3000),占用了该线程
3.处理方式:
个人理解,就是后台去处理下面的事情,让界面保持响应能力
如下官方解释
根据指定的标记处理调用线程的所有挂起事件,直到没有更多的事件处理。
当您的程序忙于执行长时间操作(例如复制文件)时,可以偶尔调用此功能。
如果您正在运行连续调用此函数的本地循环,而不发生事件循环,则不会处理DeferredDelete事件。 这可能会影响窗口小部件的行为,例如 QToolTip,依赖于DeferredDelete事件才能正常运行。 另一种方法是从该本地循环中调用sendPostedEvents()。
调用此函数仅处理调用线程的事件。
注意:此功能是线程安全的。
4.解决后:
QApplication::processEvents()
QT项目中,发现界面调用show()之后,并不能直接显示出界面,需要等msleep(3000)执行完以后,才可以。
MainWindow w;
w.show();
QThread::msleep( 3000 );
return a.exec
2.原因分析:
QThread.msleep(3000),占用了该线程
3.处理方式:
QCoreApplication::processEvents(); //后台处理程序
个人理解,就是后台去处理下面的事情,让界面保持响应能力
如下官方解释
根据指定的标记处理调用线程的所有挂起事件,直到没有更多的事件处理。
当您的程序忙于执行长时间操作(例如复制文件)时,可以偶尔调用此功能。
如果您正在运行连续调用此函数的本地循环,而不发生事件循环,则不会处理DeferredDelete事件。 这可能会影响窗口小部件的行为,例如 QToolTip,依赖于DeferredDelete事件才能正常运行。 另一种方法是从该本地循环中调用sendPostedEvents()。
调用此函数仅处理调用线程的事件。
注意:此功能是线程安全的。
4.解决后:
MainWindow w;
w.show();
QCoreApplication::processEvents();
QThread::msleep( 3000 );
return a.exec();
QApplication::processEvents()
相关文章推荐
- <Linux+Qt>Qt4编程控制mplayer嵌入自定义界面监控或视频显示
- 如何使用Qt 4把ls命令的结果显示到GUI界面上去?-兼回答网友提问
- qt界面不显示鼠标
- Qt 界面图标显示,并显示文字注释
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Windows界面编程第八篇 listbox彩色显示隔行变色
- Qt 国际化编程,真正解决汉字显示方块、乱码问题!
- Qt在GUI程序里显示控制台界面
- Qt下的OpenGL 编程(7)顶点数组和显示列表
- qt编程修改windows登陆界面时遇到的问题
- Windows界面编程第八篇 listbox彩色显示隔行变色
- Qt 国际化编程解决汉字显示方块、乱码问题!
- qt界面窗口旋转90度显示
- 要开发一个跨平台的界面进行PPT文件的显示,用QT还是WxWidgets呢
- QT4 Creator下的图形界面编程入门
- QT+OSG+CEGUI界面编程
- MFC编程中,应用程序界面最小化与显示之间切换时,GDI对象增加
- Qt下的OpenGL 编程(7)顶点数组和显示列表
- Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
- Qt编程之窗口居屏幕中间显示