我有一个从bison(解析器)生成的控制台应用程序,我想为它构建一个简单的gui 所以我可以将这个gui的输入发送到控制台,并从控制台输出到gui。 我尝试使用java进程类做到这一点,但它不适合我,请帮助我这样做 使用qt。
答案 0 :(得分:4)
这取决于您想要输入/输出控制台应用程序的数据的复杂程度。
低复杂度 使用从Qt GUI传递到控制台应用程序的一些命令开关。查看QProcess class documentation。
高度复杂性 我会选择类似RPC的解决方案。查看QtDBus documentation(仅限Linux / Unix)。
注意:我假设您希望将生成的bison解析器与Qt GUI 分开(如果您需要再次重新生成它)。
答案 1 :(得分:1)
我认为您必须在.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;
}
希望它有所帮助!
答案 2 :(得分:1)
保留您的控制台和图形应用程序,两个独立的应用程序。你已经拥有了控制台,所以让我们看看如何制造另一个:
在Qt中创建一个普通的GUI应用程序,并使用QProcess
类调用您的控制台应用程序。使用此类的readData()
和writeData()
(及类似)方法从标准输出读取并写入控制台应用程序的标准输入。
查看QProcess
文档以获取详细信息。
答案 3 :(得分:1)
来自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");
对我而言,它就是这样的。
玩得开心
答案 4 :(得分:0)
替代方案:Tcl / TK
除非您有充分的理由使用QT,否则您可能会发现它更容易使用Tcl/Tk. Tcl是从头开始设计的,用于围绕现有C程序包装脚本和GUI设施,这是迄今为止最简单的方法。它支持很多不同的方法来集成C代码和Tk(Tcl / Tk附带的GUI工具包)非常简洁,并且非常简单易学(想想:CS论文中的一个2小时实验室)。
Tcl集成功能:
Tcl可以打开程序的全双工管道并向下传输管道。猜测这可能是你的最佳选择。
您可以使用fork / exec来运行程序,传递命令行参数。
您也可以在您的C程序中嵌入Tcl解释器;用于执行此操作的API非常简单。
Tcl有API(也很简单)用于使用新命令扩展解释器。
可能还有一两种其他方法让我无法忘记。