QWidget:“必须在GUI中创建小部件

时间:2012-07-28 19:30:49

标签: c++ multithreading qt boost boost-thread

我正在使用boost::thread和Qt。我不是从非gui线程创建任何Widget。这是我的代码。

int main(int argc, char *argv[]){
    QApplication a(argc, argv);

    MainWindow w;
    w.show();


    Monitor  monitor;
    Producer producer(&monitor);
    Matrix   matrix;
    Consumer consumer(&monitor, &matrix);
    boost::thread_group thread_group;
    boost::thread& producer_thread = producer.start();
    //boost::thread& consumer_thread = consumer.start();
    //thread_group.add_thread(&producer_thread);
    //thread_group.add_thread(&consumer_thread);
    //thread_group.join_all();

    return a.exec();
}

producer.start()consumer.start()创建新主题。我得到运行时断言失败

ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1299

但是start()从不调用任何gui小部件。而且我还开发了任何GUI。 start()设置一个带有produce()回调的线程。并返回该线程的ref

0 个答案:

没有答案