如何在linux平台上将控制台输出重定向到qt中的GUI

Posted

技术标签:

【中文标题】如何在linux平台上将控制台输出重定向到qt中的GUI【英文标题】:how to redirect the console output to GUI in qt on linux platform 【发布时间】:2011-05-12 07:26:30 【问题描述】:

我正在做一个名为数据包嗅探的项目。它的工作原理类似于 etherial。它捕获并显示所有到达主机的数据包。开发这个项目正在linux平台上工作并使用QT来开发它。请指导我遇到以下问题

    能够在控制台中显示数据包信息我想将这些数据包信息重定向到我的 GUI。有可能吗?

【问题讨论】:

您正在编写的程序是执行数据包嗅探,还是外部程序? 【参考方案1】:

抱歉,不准确,我面前没有参考资料。我最近正是这样做的,它非常简单。使用 QProcess 启动数据包嗅探器,然后创建一个插槽来处理 ReadyRead (?) 信号。 ReadyRead 插槽然后可以从进程中读取 stdout 和 stderr 并将输出放到 GUI 上。

【讨论】:

【参考方案2】:

如果您将外部程序的标准输出通过管道传输到您的 Qt 程序,您可以使用 QTextStream 并将其附加到您的标准输入(参见 docs)。

从那里你可以在你的程序周围传递 QTextStream 对象并使用 QTextStream::readLine() 提取输入,将这些行附加到你的(例如)QTextEdit。

我不知道这是否可行,但您甚至可以从 QTextStream::device() 中获取 QIODevice,然后将 QIODevice::readyRead() 信号连接到您自己的插槽以使一切异步。

【讨论】:

感谢 leegent...现在可以从控制台输出输出了...我已经使用了这两种方法... 您应该将其中一个回复标记为正确答案:)

以上是关于如何在linux平台上将控制台输出重定向到qt中的GUI的主要内容,如果未能解决你的问题,请参考以下文章

exe文件的输出内容无法重定向到winform窗口中

Log4Qt 输出重定向(控制台)

将输出重定向到文件,然后返回到 Java 中的控制台

如何将 time 命令的输出重定向到 Linux 中的文件?

Pitest:如何将日志输出重定向到文件?

如何在 NGINX 上将 HTTPS 重定向到 HTTP?