6

我有一个从 bison(解析器)生成的控制台应用程序,我想为它构建一个简单的 gui,这样我就可以将输入从这个 gui 发送到控制台,并从控制台获取输出到 gui。我尝试使用 java 进程类来做到这一点,但它对我不起作用,请帮助我使用 qt 来做到这一点。

4

5 回答 5

4

这取决于您要输入/输出控制台应用程序的数据的复杂性。

低复杂度 使用一些从 Qt GUI 传递到控制台应用程序的命令开关。查看QProcess 类文档

高复杂性 我会使用类似 RPC 的解决方案。查看QtDBus 文档(仅限 Linux/Unix)。

注意:我假设您希望将生成的野牛解析器与 Qt GUI 分开(以防您需要再次重新生成它)。

于 2010-02-03T16:56:08.770 回答
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;
}

希望它有点帮助!

于 2010-02-03T16:46:35.347 回答
1

让您的控制台和图形应用程序成为两个独立的应用程序。你已经有了一个控制台,让我们看看如何制作另一个:

在 Qt 中创建一个普通的 GUI 应用程序,并使用QProcess该类调用您的控制台应用程序。使用此类的and (和类似的)方法从标准输出读取并写入控制台应用程序的标准输入readData()writeData()

检查QProcess文档以获取详细信息。

于 2010-02-03T20:49:16.650 回答
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");

对我来说,它是这样工作的。

玩得开心

于 2012-06-21T16:35:06.770 回答
0

替代方案:Tcl/TK

除非您有充分的理由使用 QT,否则您可能会发现使用Tcl/Tk更容易。 Tcl 是从头开始设计的,用于将脚本和 GUI 工具包装在现有的 C 程序周围,并且是迄今为止最简单的方法。它支持多种不同的方式来集成 C 代码和 Tk(随 Tcl/Tk 提供的 GUI 工具包)的编程非常简洁,并且非常易于学习(想想:CS 论文中的一个 2 小时实验室)。

Tcl 集成功能:

  • Tcl 可以为程序打开一个全双工管道并通过管道进行通信。猜测这可能是您的最佳选择。

  • 您可以使用 fork/exec 运行程序,传递命令行参数。

  • 你也可以在你的 C 程序中嵌入 Tcl 解释器;执行此操作的 API 非常简单。

  • Tcl 有 API(也很简单),可以用新的命令来扩展解释器。

  • 可能还有一两种我不记得的其他方式。

于 2010-02-03T17:19:47.997 回答