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