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

相关推荐
Quz3 天前
QML Hello World 入门示例
qt
xcyxiner6 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner6 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner7 天前
DicomViewer (添加模型类)3
qt
xcyxiner7 天前
DicomViewer (目录调整) 2
qt
xcyxiner8 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR0069 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术9 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园9 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob9 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio