C++ 如何将QT功能添加到非QT驱动程序

C++ 如何将QT功能添加到非QT驱动程序,c++,qt,oop,C++,Qt,Oop,我有一个正在开发的QT应用程序,它本质上是一个GUI,从几个不同的内部开发的子模块启动程序,以及在这个应用程序本身内部开发的一些例程。然而,我遇到了一个路障。其中一个子模块也可以作为独立库(.a)运行 此库使用主cpp运行,虽然在命令行上编译 main.cpp的示例代码 // these functions are called inside the library, but implemented in main.cpp for flexibility void printMsg(Strin

我有一个正在开发的QT应用程序,它本质上是一个GUI,从几个不同的内部开发的子模块启动程序,以及在这个应用程序本身内部开发的一些例程。然而,我遇到了一个路障。其中一个子模块也可以作为独立库(.a)运行

此库使用主cpp运行,虽然在命令行上编译

main.cpp的示例代码

// these functions are called inside the library, but implemented in main.cpp for flexibility

void printMsg(String& msg){
    // prints/cout msg
}

int printPrompt(String& str1, String& str2){
    // it prints str1 and str2 as prompt
    // gets the user input from console that is returned as int return value
    // library uses this return value to do various task
}

main(){
    runLibApp()  // this function is in the library that starts the execution
}
我想有弹出窗口来处理消息,提示和用户输入。我确实在其他地方使用的mainwindow类中定义了一个弹出函数,但它只在mainwindow类和几个QT子类中调用

因为这个库不是QT子类,所以我不能在其中使用QT弹出函数。在不破坏库本身的情况下,我无法将函数重新定义为QT子类的一部分


有没有什么方法可以将我的QT弹出函数连接到此库而不必对库进行大量修改?

几乎就在发布之后,我自己发现了答案!在我的驱动程序cpp文件中,我添加了标准Qt includes,以及mainwindow.h

在输入/输出函数本身中,我添加了这个方便的函数来获取主窗口指针:

void PrintMsg(String msg){
    MainWindow* gui = MainWindow::getMainWinPtr();
    gui->Popup(msg);
}

很好用

也许你可以将它作为一个单独的应用程序运行,并通过重定向stdin和stdout做一些有趣的事情?在QProcess中,你可以读取输出并将输入发送到外部命令行程序。