1

我正在尝试将修改后的 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 不会阻塞主执行呢?

4

1 回答 1

0

设计模式是完全错误的,QApplication 和 QCoreApplication 不应该在一个应用程序中相乘。例如,您应该做的是创建自己的类,例如:

class LibraryCore: public QObject {
}

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

于 2013-08-07T10:05:16.870 回答