这取决于您想要输入/输出到控制台应用程序的数据复杂程度。
低复杂度 使用一些命令开关,您可以从Qt GUI传递给控制台应用程序。查看QProcess类文档。
高复杂度 我会选择类似RPC的解决方案。查看QtDBus文档(仅限Linux / Unix)。
注意:我假设您希望将生成的bison解析器与Qt GUI分开(以防需要重新生成它)。
我认为你需要在你的.PRO
文件中添加以下条目:
\# Application template<br>
TEMPLATE = app
\# QMake configuration<br>
CONFIG += console
main.cpp
{
QApplication App(argc, argv);
...
MainFrm* pMainFrm = new MainFrm();
pMainFrm->show();
...
int ExitCode = App.exec();
return ExitCode;
}
来自http://www.qtcentre.org/threads/33506-where-is-cout-in-Qt-Creator
首先添加
CONFIG += console
#include <stdio.h>
QTextStream out(stdout);
out << QString("Some text");
对我来说,它是这样工作的。
玩得开心。
保持你的控制台和图形应用程序分开,它们是两个独立的应用程序。你已经有了控制台应用程序,现在让我们看看如何创建另一个:
使用Qt创建一个普通的GUI应用程序,并使用QProcess
类调用你的控制台应用程序。使用该类的readData()
和writeData()
(以及类似的)方法从标准输出读取并写入标准输入。
详细信息请查阅QProcess
文档。
另一种选择:Tcl/TK
除非你有充分的理由使用QT,否则你可能会发现使用Tcl/Tk更容易。Tcl是从头开始设计的,用于在现有C程序周围包装脚本和GUI功能,这绝对是最简单的方法。它支持多种不同的集成C代码和Tk(与Tcl/Tk一起提供的GUI工具包)编程非常简洁且易学(想象一下:在计算机科学课程中进行两个小时的实验室)。
Tcl集成特性:
Tcl可以打开一个全双工管道与程序通信。我猜这可能是你最好的选择。
你可以使用fork/exec来运行程序,并传递命令行参数。
你还可以将Tcl解释器嵌入到你的C程序中;这个API非常简单。
Tcl还有一些API(同样非常简单),用于扩展解释器的新命令。
可能还有其他一两种我记不起来的方式。