我想在主应用程序的单独线程中运行代码,为此我创建了一些文件:

线程2.h

#ifndef THREAD2_H
#define THREAD2_H
#include <QThread>

class thread2 : public QThread
{
    Q_OBJECT

public:
    thread2();

protected:
    void run();

};

#endif // THREAD2_H

thread2.cpp
#include "thread2.h"

thread2::thread2()
{
    //qDebug("dfd");
}
void thread2::run()
{
    int test = 0;
}

而主文件称为main.cpp
#include <QApplication>
#include <QThread>
#include "thread1.cpp"
#include "thread2.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    thread2::run();

    return a.exec();
}

但这行不通...

Qt Creator告诉我:“无法在没有对象的情况下调用成员函数'virtual void thread2::run()'”

谢谢 !

最佳答案

像这样调用它:thread2::run()是调用static函数的方式,而run()不是。

另外,要启动线程,您无需显式调用run()方法,您需要创建一个线程对象并在其上调用start(),该对象应在适当的线程中调用run()方法:

thread2 thread;
thread.start()
...

10-04 19:07