将参数传递给 QThread 的 run() 方法

Sam*_*NLP 3 qt multithreading

我已经对 Qthread 进行了子类化,以便我可以在run()方法中实现我的代码。我必须向它传递一些参数,

我这样尝试过,那么这里有什么问题吗?

class QMyThread :
    public QThread
{
public:
    QMyThread();
    ~QMyThread(void);
    virtual void start(FILE *data, int sock, int bits);

protected:
    virtual void run(FILE *data, int sock, int bits);
};
Run Code Online (Sandbox Code Playgroud)

运行方法;

void QMyThread::run(FILE *data, int sock, int bits)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)

启动线程:

QMyThread *thread;
thread->start(datafile, sockint, bitsint);
Run Code Online (Sandbox Code Playgroud)

首先它说线程可能未初始化,然后它在start()方法中崩溃SIGSEGV error。有人可以帮助我吗?

bru*_*uno 5

您不应该子类化 QThread 类,因为这不再是使用 QThread 的推荐方式。

欲了解更多信息http://qt-project.org/doc/qt-4.8/qthread.html

为了回答你的问题,你不能让这些参数成为你的类的成员并通过设置器或其构造函数分配它们的值吗?