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

相关推荐
xiaoshuaishuai81 小时前
C# AvaloniaUI ProgressBar用法
开发语言·c#
咋吃都不胖lyh1 小时前
LangGraph标准构建示例
开发语言·python
Jun6261 小时前
QT(1)-C/C++库生成和调用
c语言·开发语言·c++·qt
Jun6261 小时前
QT(10)-TCP数据收发
开发语言·qt·tcp/ip
Littlehero_1212 小时前
QT自定义控件之热换站远程监控系统
c++·qt
*neverGiveUp*2 小时前
Python基础语法
开发语言·python
努力努力再努力wz2 小时前
【Qt入门系列】一文掌握 Qt 常用显示类控件:QLCDNumber、QProgressBar 与 QCalendarWidget
c语言·开发语言·数据结构·数据库·c++·git·qt
右耳朵猫AI2 小时前
JS/TS周刊2026W21 | Deno2.8RC、Angular22RC、TypeORM1.0
开发语言·javascript·ecmascript
闪电悠米2 小时前
黑马点评-秒杀优化-02_lua_precheck
开发语言·redis·分布式·缓存·junit·wpf·lua