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

相关推荐
Quz1 小时前
QML 拖拽篇:接收拖拽与数据交换
qt
Interview Aid1124 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
CoderIsArt11 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
AI情绪识别开源14 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
「QT(C++)开发工程师」15 小时前
C++ auto 用法详解
开发语言·c++
OPEN-F15 小时前
C++STL教程:容器适配器与实用工具
开发语言·c++
yaoxin52112315 小时前
507. Java 反射 - 在 BeanFactory 中实现依赖注入
java·开发语言
OPEN-F15 小时前
C++模板教程:变参模板、折叠表达式与SFINAE
java·开发语言·c++
有点。15 小时前
C++二叉搜索树进阶
开发语言·c++