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

最佳答案

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

class LibraryCore: public QObject {
}


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

09-10 04:49
查看更多