QT(3)-线程中使用控件

1.通过指针的方式

线程头文件,创建一个控件

复制代码
public :
    QTextEdit *rev_message_edit;

线程C文件,创建一个控件

复制代码
ThreadSubscriber::ThreadSubscriber(QObject *parent) : QObject(parent)
{
    qDebug()<<"ThreadSubscriber start!";
    rev_message_edit = new QTextEdit;
}

主窗口关联这个控件

复制代码
UserSubscriber->rev_message_edit = ui->rev_edit;

2.通过信号和槽的方式

在线程C文件加入

复制代码
/*
函数功能:槽链接到主线程控件
输入参数:str 需要显示的字符串
输出参数:无
*/
void ThreadSubscriber::startThreadSlot(std::string str)
{
   emit sendString(QString::fromStdString(str));
}

线程头文件加入

复制代码
signals:
    void sendString(QString);//声明信号

public slots:
    void startThreadSlot(std::string str);//线程具体执行的函数

在主线程加入显示槽

复制代码
/*
函数功能:显示接收消息的槽函数
输入参数:msg 要显示的内容
输出参数:无
*/
void MainWindow::show_rev_edit(QString msg)
{
    ui->rev_edit->append(msg);
}

关联信号和槽

复制代码
connect(UserSubscriber, SIGNAL(sendString(QString)), this, SLOT(show_rev_edit(QString)));

在线程函数里面调用startThreadSlot,就可以更新到主线程的控件上

相关推荐
小徐不徐说1 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang2 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3272 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
Dxy12393102163 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷3 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang3 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
nice_lcj5204 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
樱花树下的数学喵6 小时前
手写简易 STL string|C++ 字符串底层实现
开发语言·c++
jimy16 小时前
C++ 报错的 qualifiers 的意思
开发语言·c++