评论

收藏

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

开发技术 开发技术 发布于:2021-07-08 15:06 | 阅读数:406 | 评论:0

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

  Qt有信号发射机制 emit,例如,我们将信息封装到结构体,在线程执行时发到UI线程,在UI线程响应子线程发射的信号,这样Qt的子线程就可以间接的更新UI线程。
  子线程头文件:
#pragma once
#include <QThread>
#include <string>
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);
};
  
关注下面的标签,发现更多相似文章