将简单的Qt UI添加到现有C ++代码(非Qt)

时间:2015-08-06 20:31:54

标签: c++ qt

我正在尝试为现有的C ++(非Qt)项目创建一个非常简单的UI:只有一个窗口显示数字,这些数字是执行现有C ++项目的输出(我可能会添加一个几个按钮,将需要一些行为,但这是为了以后)。

所以我重命名了我的main()函数 - 让我们把它称为foo() - 在现有项目中改为另一个名字,我的想法是使用new main()来创建UI,并调用foo()来显示来自foo到UI。应该很简单,但我不能包含必要的Qt头(例如QApplication)来创建主要的UI。我修改了cmake以找到Qt5Core和Qt5Widget包它编译得很好,但是一旦我尝试包含QApplication.h,它就会出错。我还尝试将包含添加到cmake给定here,但这不起作用。

我对cmake和Qt都很陌生,所以请原谅我的无知。有什么明显我想念的吗?许多在线和SO上的帖子都说要创建一个Qt项目并调用现有代码,但是对于我要求的功能,这不是一个选项。我必须在现有的C ++代码中创建UI,而不是反过来。

1 个答案:

答案 0 :(得分:0)

我不确定实现目标的正确方法是什么,但如果您需要,还有另一种方法:您可以构建现有代码并使用QProcess类来调用它并读取其输出并显示它,您也可以传递参数

来自Qt文档的

  

QProcess类用于启动外部程序和   与他们沟通。

     

运行流程

     

要启动进程,请传递名称和命令行参数   你想要作为start()的参数运行的程序。争论是   作为QStringList中的单个字符串提供。

     

或者,您可以将程序设置为使用setProgram()和   setArguments(),然后调用start()或open()。

     

例如,以下代码段运行模拟时钟示例   在X11平台上的Fusion风格中,通过传递包含的字符串   "风格"和"融合"作为参数列表中的两个项目:

QObject *parent;
...
QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments << "-style" << "fusion";

QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);