QT学习之事件处理(二) 处理密集响应时的响应保持
来源:互联网 发布:mac系统如何回到桌面 编辑:程序博客网 时间:2024/06/05 00:43
当处理一个事件时,也可能会同时产生一些其它的事件,如果再处理一个特定的事件上耗费的时间比较多,那么用户界面就会变得无法响应。例如,在应用程序中把一个文件保存到磁盘中,直到文件保存完毕,才会处理那些由于窗口系统产生的事件。在文件保存的过程中,应用程序就不能响应来自窗口系统的重新绘制请求。
一种解决方法当然是用多线程:一个线程用于处理应用程序的界面,另外一个程序则执行文件操作。
另外一种更为简单的方式是在文件保存的代码中频繁调用QApplication::processEvents();这个函数告诉QT处理那些所有还没有被处理的各类事件,然后再将控制权返还给调用者,使用这种方式存在一个潜在的问题,即用户也学在应用程序中还在保存文件就关闭了,或者甚至在保存文件的时候又单击了一次File->save,这样就可能产生意外的后果,最简单的解决方式是将processEvents()替换为processEvents(QEventLoop::ExcludeUserInputEvents);
除使用多线程和QProcessDialog之外,还有一种处理长时间运行操作的完全不同的方式,在QT中,通过使用一个0毫秒定时器,只要没有其它尚未处理的事件,就可以触发这个定时器
总结下就是QT中解决上述问题有三种方式 1:多线程 2:在处理耗时事件时频繁调用QApplication::processEvents 3:启动0毫秒定时器,推迟处理
- QT学习之事件处理(二) 处理密集响应时的响应保持
- 【iOS开发】事件处理之响应链(二)
- enter事件的响应处理
- Qt之保持GUI响应
- qt焦点事件响应捕捉处理,事件过滤器
- 关于回车事件的响应处理
- setTimeout处理jquery事件的延迟响应
- iOS 的事件处理 响应者链
- 计算机安全事件响应处理
- Android button事件响应处理
- 事件处理响应者链条
- 事件处理和消息响应
- iOS-控件响应用户控制事件之事件处理
- Android游戏开发之处理按键的响应方式(二十二)
- 处理ajax的响应
- Qt事件处理(二)
- Android事件处理之三 响应的系统设置的事件
- QT事件处理(二) 之 事件过滤器
- 面试必备的9大成功秘诀
- C 语言内存对齐
- 监听总结之4.基本概念的区别和联系
- 对textView设置placeholder
- 黑马程序员_java开发的前奏3
- QT学习之事件处理(二) 处理密集响应时的响应保持
- QWT安装配置,控件在Qtcreator中显示 (基于Ubuntu12.04)
- android 静默安装apk
- 利用streaming 编写 mapreduce
- Hadoop新旧API区别2<转>
- 测试驱动开发TDD(test drive development)
- Java表达式易错点
- 未来的研究生之路
- 指定树控件TreePanel 铺展到第几层