我有一个从 bison(解析器)生成的控制台应用程序,我想为它构建一个简单的 gui,这样我就可以将输入从这个 gui 发送到控制台,并从控制台获取输出到 gui。我尝试使用 java 进程类来做到这一点,但它对我不起作用,请帮助我使用 qt 来做到这一点。
5 回答
这取决于您要输入/输出控制台应用程序的数据的复杂性。
低复杂度 使用一些从 Qt GUI 传递到控制台应用程序的命令开关。查看QProcess 类文档。
高复杂性 我会使用类似 RPC 的解决方案。查看QtDBus 文档(仅限 Linux/Unix)。
注意:我假设您希望将生成的野牛解析器与 Qt GUI 分开(以防您需要再次重新生成它)。
我认为您必须将以下条目放入.PRO
文件中:
\# Application template<br>
TEMPLATE = app
\# QMake configuration<br>
CONFIG += console
然后,您可以在 Qt 中创建一个窗口,您的主窗口将位于控制台旁边!
例子 :
main.cpp
{
QApplication App(argc, argv);
...
MainFrm* pMainFrm = new MainFrm();
pMainFrm->show();
...
int ExitCode = App.exec();
return ExitCode;
}
希望它有点帮助!
让您的控制台和图形应用程序成为两个独立的应用程序。你已经有了一个控制台,让我们看看如何制作另一个:
在 Qt 中创建一个普通的 GUI 应用程序,并使用QProcess
该类调用您的控制台应用程序。使用此类的and (和类似的)方法从标准输出读取并写入控制台应用程序的标准输入readData()
。writeData()
检查QProcess
文档以获取详细信息。
来自http://www.qtcentre.org/threads/33506-where-is-cout-in-Qt-Creator
先加
CONFIG += console
到您的 .pro 文件
第二次使用
#include <stdio.h>
QTextStream out(stdout);
out << QString("Some text");
对我来说,它是这样工作的。
玩得开心
替代方案:Tcl/TK
除非您有充分的理由使用 QT,否则您可能会发现使用Tcl/Tk更容易。 Tcl 是从头开始设计的,用于将脚本和 GUI 工具包装在现有的 C 程序周围,并且是迄今为止最简单的方法。它支持多种不同的方式来集成 C 代码和 Tk(随 Tcl/Tk 提供的 GUI 工具包)的编程非常简洁,并且非常易于学习(想想:CS 论文中的一个 2 小时实验室)。
Tcl 集成功能:
Tcl 可以为程序打开一个全双工管道并通过管道进行通信。猜测这可能是您的最佳选择。
您可以使用 fork/exec 运行程序,传递命令行参数。
你也可以在你的 C 程序中嵌入 Tcl 解释器;执行此操作的 API 非常简单。
Tcl 有 API(也很简单),可以用新的命令来扩展解释器。
可能还有一两种我不记得的其他方式。