我正在尝试将修改后的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不会阻止主执行?
答案 0 :(得分:0)
设计模式完全错误,QApplication和QCoreApplication不应该在一个应用程序中成倍增加。你应该做的就是创建自己的类,如:
class LibraryCore: public QObject {
}
并将QApplication替换为未来库源中的此类。然后你应该在LibraryCore中实现所需的方法(在应用程序中使用的方法)使它们正常工作..