Qt对象内的线程

时间:2017-12-09 01:04:15

标签: c++ qt stdthread

嗨,我在Qt程序中实现C ++ 11线程时遇到问题。我使用数据结构与线程进行通信,但我不能在Qt类中创建一个线程。我也不允许在main中创建线程。我得到的错误是std :: invoke:找不到匹配的重载函数。

class someapp : public QWidget {  
   Q_OBJECT  
public:  
    someapp(QWidget * parent = nullptr);  
private:  
    somedatastructure *a;  
};

someapp::someapp(QWidget * parent) : QWidget(parent) {  
    a = new somedatastructure;
    std::thread t(&dosmth::doingsmth, a);
    /* some UI stuff*/
}

class dosmth{
public:
   void doingsmth(somedatastructure &x);
};

int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    someapp x;
    x.show();
    return app.exec();
}

1 个答案:

答案 0 :(得分:0)

第一个问题是,你是在混淆指针和引用(我认为这是一个错字)

第二个问题是,线程需要使用对象的实例启动,或者作为静态调用启动,如下所示:

static void doingsmth(somedatastructure *x)