Qt子线程更新UI的方法
2016-08-22 22:25
253 查看
最近刚刚接触一个qt项目,由于原始程序中的listwidget里有大量的item,每一个item都有一个按钮,这样导致程序运行起来后,生成按钮的速度很慢,严重影响了软件的使用体验。于是将生成按钮的操作放到子线程中。一开始我是直接在子线程中生成按钮来更新UI的,发现编译可以通过,但是运作时报错。上网查资料,才发现是Qt里只有UI线程才可以更新UI,子线程要更新UI,可以通过使用信号-槽函数机制,在子线程里发送信号,然后将信号与UI线程(即主函数)中的slot函数connect,这样子线程运行时,将信号传送到消息队列,UI线程从消息队列依次取出信号,调用相应的slot函数响应。从而达到更新UI界面的目的。
子线里面的信号函数只需要声明,不需要定义。当子线程与UI线程传递的不是qt元类型的数据时,要注册消息。子线程定义时要包括Q_OBJECT宏。具体代码见
http://blog.csdn.net/slj_win/article/details/6856428 http://blog.chinaunix.net/uid-26808060-id-3355832.html
子线里面的信号函数只需要声明,不需要定义。当子线程与UI线程传递的不是qt元类型的数据时,要注册消息。子线程定义时要包括Q_OBJECT宏。具体代码见
http://blog.csdn.net/slj_win/article/details/6856428 http://blog.chinaunix.net/uid-26808060-id-3355832.html
相关文章推荐
- 387. First Unique Character in a String
- Jmeter组件6. SOAP/XML-RPC Request
- 去掉UISegmentedControl的边框颜色
- UE4.11新特性:胶囊体阴影
- urllib.request
- 状态栏(UIStatus)的使用
- 读书笔记-柒-《腾讯网UED体验设计之旅》
- 1.5 Arduino的第一个程序
- CodeForces 653A Bear and Three Balls 【sort+去重(unique)】
- JS生成 UUID的四种方法
- Java中GUI的事件处理
- poj 1679 The Unique MST(次小生成树模版)
- Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败
- ural 2071 - Juice Cocktails
- Xcode直接显示图片插件KSImageNamed
- 笔迹宽度估计的低质量文本图像二值化(Robust Document Image Binarization Technique for Degraded Document Images)
- Gradle for Android(二)全局设置、自定义BuildConfig
- Android02--Android之UI的基本控件01
- 修改SystemUI 电池图标当电量为99,直接变为100(工作中用到)
- HDU 5493 Queue (线段树逐个插入)