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,就可以更新到主线程的控件上

相关推荐
BUG研究员_9 小时前
Runnable与LCEL
开发语言·人工智能·python
牛艺翔11 小时前
C++基础
开发语言·c++
键盘会跳舞11 小时前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
美味蛋炒饭.11 小时前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
我星期八休息11 小时前
网络编程—网络层
开发语言·前端·网络·人工智能·智能路由器
问商十三载11 小时前
RAG 检索效果差怎么排查?2026 五层诊断法完整指南
开发语言·人工智能·windows·python·算法
不负岁月无痕11 小时前
简单理解操作系统结构
java·linux·c语言·开发语言·c++·面试
SomeB1oody12 小时前
【RustyML入门】2.9. MeanShift
开发语言·后端·机器学习·rust·教程
萧瑟其中~12 小时前
多线程锁详解:互斥锁·自旋锁·读写锁(CAS + futex 原理)
开发语言·c++
qq_4480111612 小时前
C语言中的指针函数和函数指针
java·c语言·开发语言