如何异步运行整个QApplication?

时间:2013-08-07 09:56:43

标签: c++ multithreading qt asynchronous concurrency

我正在尝试将修改后的qt-programm作为库运行。我需要它不会阻止主要的执行。

所以我想要做的是运行QApplication并开始执行主应用程序。我该怎么做?

我的第一个想法是在一个单独的线程中运行它。

void MyClass::execute() {
    someClass = someClass::instance();
    std::thread t1(&MyClass::startApp, this);
    someClass->someFunction();
    someClass->doMoreStuff();
}
void MyClass::startApp() {
    QApplication app(argc, argv);
    app.exec();
    QCoreApplication::quit();
}

但这会导致Call to '__invoke' is ambiguous错误。虽然我不知道为什么/ __invoke被覆盖,以及如何处理这个错误。 :(

那么我怎样才能实现QApplication不会阻止主执行?

1 个答案:

答案 0 :(得分:0)

设计模式完全错误,QApplication和QCoreApplication不应该在一个应用程序中成倍增加。你应该做的就是创建自己的类,如:

class LibraryCore: public QObject {
}

并将QApplication替换为未来库源中的此类。然后你应该在LibraryCore中实现所需的方法(在应用程序中使用的方法)使它们正常工作..