【学习笔记】QT C++ 关于多线程的 一种使用方法
QT C++ 关于多线程的 一种使用方法
刚接触 QT C++不久,今天熟悉了C++使用connect();与moveToThread();的执行多线程的一种用法,记录下来以备不时之需。
在类中创建线程对象、触发信号以及执行函数
class testcontrol: public QMainWindow
{
Q_OBJECT
QThread qth;
public:
explicit testcontrol(QWidget *parent = nullptr);
~testcontrol();
signals:
void startupdata();
private slots:
void updatachart();
private:
Ui::testcontrol*ui;
};
其中qth为线程对象,startupdata为触发信号,updatachart为执行函数。
连接类中执行函数与触发函数
testcontrol::testcontrol(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::testcontrol)
{
ui->setupUi(this);
connect(this, SIGNAL(startupdata()), this, SLOT(updatachart()));
this->moveToThread(&qth);
}
其中connect的用法为:
connect(触发信号对象地址,SIGNAL(触发信号),执行函数对象地址,SLOT(执行函数));
其中moveToThread是为了将对象引入到创建的线程中;
创建执行函数
void testcontrol::updatachart()
{
while (true) {
;
}
}
需要线程执行的内容
在需要开启线程时执行
qth.start();
emit startupdata();
线程开启并发出触发信号;