使用qt:如何在控制台应用程序之上构建一个Gui?

时间:2010-02-03 16:36:07

标签: qt console-application bison

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

5 个答案:

答案 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(也很简单)用于使用新命令扩展解释器。

  • 可能还有一两种其他方法让我无法忘记。