QT:子线程更新UI

问题描述:Qthread的一般思路是,主线程负责提供界面,子线程负责无UI的单一任务,通过“信号-槽”与主线程交互。有的子线程实现需要更新界面。

解决方法:

首先在子进程的类中定一个更新UI的信号

task.h

signals:
    void updateUI();

task.cpp

在子进程实现的函数中发出信号

        emit updateUI();

在mainwindow.h中声明一个函数

public:
    void setcontent();

mainwindow.cpp:

函数内容:在lineEdit中写入emo

void MainWindow::setcontent(){


    ui->lineEdit->setText("emo");
}

将信号和槽进行连接

m是task类声明的对象

    connect(m,&task::updateUI,this,&MainWindow::setcontent);

这样就可以啦,记录一下今天关于QThread学到的新知识