我想为一个由 QWidget 继承的类创建一个线程。实际上,我尝试使用 QThread 进行多重继承,但它失败了,我想使用线程运行特定的成员函数。我怎样才能做到这一点?有人有什么主意吗?
最佳答案
您可以使用实现线程并调用小部件方法的包装类:
class MyWidget : public QWidget
{
[...]
void threadMethod();
};
class MyThread : public QThread
{
[...]
MyThread( MyWidget* widget )
: mWidget(widget)
{
}
void run()
{
mWidget->threadMethod();
}
MyWidget* mWidget;
};
但是,您不应该在“threadMethod”中调用任何 QWidget 方法,因为 GUI 和小部件属于“主”线程,而 QWidget 方法不是线程安全的!
将小部件和线程代码完全分开可能会更好。
关于c++ - QWidget继承的类如何创建线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912491/