c++ - QWidget继承的类如何创建线程?

标签 c++ visual-studio-2008 qt4

我想为一个由 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/

相关文章:

c++ - 给定索引 i,j(j>=i) 如何找到 A[j] 在子数组(i,j) 中的频率?

c# - C# 2008 中的元组错误

c++ - 在大量插入后,向 QTableView 添加行会降低应用程序的速度

c++ - Qt 并且没有 moc_*.cpp 文件

c++试图引用已删除的函数

c++ - 控制台崩溃输出指针数组和迭代 C++

c++ - 通过 X10 接收和解码曼彻斯特码

java - 如何开始黑莓开发

sql - 使用VB.NET访问远程sql服务器

c++ - 从 QWidget 中的 QTextEdit 获取文本