使用Qt:如何在控制台应用程序上构建图形界面?

6
我有一个从Bison(一种解析器)生成的控制台应用程序,我想为它构建一个简单的GUI,以便可以从该GUI向控制台发送输入并将控制台输出到GUI中。 我尝试使用Java Process类来实现,但对我没有用,请帮助我使用Qt实现。
5个回答

4

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

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

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

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


命令行应用程序已经有了“类似rpc的解决方案”,它们被称为stdin和stdout =) - rasjani
哈哈哈,没错。:) 但是如果您的控制台应用程序向sdtout输出大量信息,则解析可能会很麻烦。因此,我的回答有两个方面:低复杂度和高复杂度。;) - Symbiosoft

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;
}

希望能有所帮助!

1

1

保持你的控制台和图形应用程序分开,它们是两个独立的应用程序。你已经有了控制台应用程序,现在让我们看看如何创建另一个:

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

详细信息请查阅QProcess文档。


0

另一种选择:Tcl/TK

除非你有充分的理由使用QT,否则你可能会发现使用Tcl/Tk更容易。Tcl是从头开始设计的,用于在现有C程序周围包装脚本和GUI功能,这绝对是最简单的方法。它支持多种不同的集成C代码和Tk(与Tcl/Tk一起提供的GUI工具包)编程非常简洁且易学(想象一下:在计算机科学课程中进行两个小时的实验室)。

Tcl集成特性:

  • Tcl可以打开一个全双工管道与程序通信。我猜这可能是你最好的选择。

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

  • 你还可以将Tcl解释器嵌入到你的C程序中;这个API非常简单。

  • Tcl还有一些API(同样非常简单),用于扩展解释器的新命令。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接