【问题标题】:qt printing to terminalqt打印到终端
【发布时间】:2013-06-27 06:00:48
【问题描述】:

在我的 QT 应用程序中,如果我从终端运行应用程序,我希望在终端中打印一些实时信息。

当我使用 printf("print this") 时(无论是在 main 中还是在绘制事件期间),在我关闭 gui 之前它不会打印。

为什么会这样,我怎样才能让它实时打印信息? (我用的是linux)

谢谢!

【问题讨论】:

标签: linux qt stdout


【解决方案1】:

要写入标准输出,您应该将此CONFIG += console 添加到您的项目文件配置中,并根据自己的喜好使用printf 中的coutqDebug 默认打印为 stderr。查看此主题以获取更多信息 - How to print to console when using Qt

【讨论】:

  • 我很确定默认消息处理程序会将输出发送到标准输出。我一直都是这样用的。
  • @JacobRobbins 是的,但除非添加CONFIG += console,否则它不会显示,除了 qDebug,因为我猜它发送到 stderr
  • CONFIG += 控制台仅在 Windows 上需要。在 Unix 上,printf、qDebug 等总是打印到控制台(如果有的话,即 qdebug 没有被禁用)
【解决方案2】:

您可以使用qDebug() << ...qWarning() << ... 等。不要忘记包含<QDebug>

文档:QDebug

【讨论】:

  • 谢谢,但这仅在调试版本中吗?
  • 我猜 qDebug() 会打印到 stderror,有什么方法可以打印到 stdout 吗?
  • 你试过了吗? QDebug
【解决方案3】:

Qt 不干扰 printf 输出。 (在 Windows qmake(不是 Qt)上可以,但这不适用于 Linux)。但是,考虑到 stdout 的缓冲行为导致 printf("print this") 在缓冲区被刷新之前不会被打印。尝试例如fflush(stdout) 或简单地附加一个换行符:printf("print this\n") 以刷新缓冲区。但这与 Qt 完全无关。

【讨论】:

    【解决方案4】:

    您可能还想尝试将CONFIG -= app_bundle 添加到您的.pro 文件中。

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2020-02-24
      • 2023-03-19
      • 2017-09-26
      • 2014-06-18
      • 2014-09-01
      • 2018-07-24
      • 1970-01-01
      • 2014-11-02
      相关资源
      最近更新 更多