您当前的位置: 首页 >  ui

令狐掌门

暂无认证

  • 3浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt子线程如何更新UI,完整的代码示例

令狐掌门 发布时间:2018-09-11 12:00:12 ,浏览量:3

       Qt涉及到大量的数据更新,图像处理,视频编解码时,在主线程直接进行会让主线程阻塞,程序直接卡死,直达阻塞的部分完成,界面才更新,大家会想到用多线程来解决这类问题,但是Qt的子线程中又无法更新UI,  这是很麻烦的事,不像MFC子线程可以直接操作UI,其实Qt在子线程也可以更新UI线程。

        例如下面的界面,信息在线程产生,主线程如何获得呢?

 

        Qt有信号发射机制 emit,例如,我们将信息封装到结构体,在线程执行时发到UI线程,在UI线程响应子线程发射的信号,这样Qt的子线程就可以间接的更新UI线程。

         子线程头文件:

#pragma once

#include 
#include 

using namespace std;

//自定义消息结构
typedef struct {
	string name;
	int id;
	int age;
}Msg;

class ChildThread : public QThread
{
	Q_OBJECT

public:
	ChildThread();
	~ChildThread();

	//重写线程实体函数
	void run();

private:
	Msg msg;

//自定义信号
signals:
	void Send2UI(Msg msg);
};

   

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0489s