您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: