我正在尝试将修改后的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中实现所需的方法(在应用程序内部使用的方法),以使其正常工作。