我有一个包含多个方法的类,我想在不同的线程中调用这些方法中的每一个。
class Base : public QThread
{
copy();
move();
remove();
etc();
....
....
run();
}
这是可能的还是我应该继承在其 run() 方法中实现功能的不同类? (这将导致几个派生类)
谢谢。
最佳答案
事实上,QThread::run()只是一个启动新线程的方法。只需从不同的线程调用方法,它们就会在那里执行。
根据设计:线程间通信通常围绕消息传递模型构建,Qt 的排队连接模式使其易于实现:您只需将方法设置为插槽,然后在 run() 中启动一个QMessageLoop 通过 exec() 方法:
class Base : public QThread
{
public slots:
void copy();
void move();
void remove();
void etc();
...
protected:
void run()
{
exec();
}
}
现在您可以通过信号调用您的方法,每个 Base 实例将在自己的线程中执行它们。
关于c++ - 使用 Qt 以不同的方法线程化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928748/