0

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

当我使用 printf("print this") (在 main 中或在绘制事件期间)时,它不会打印,直到我关闭 gui。

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

谢谢!

4

4 回答 4

2

要写入标准输出,您应该将其添加CONFIG += console到您的项目文件配置中并cout根据printf自己的喜好使用。qDebug默认打印到stderr. 检查此主题以获取更多信息-使用 Qt 时如何打印到控制台

于 2013-06-29T16:53:29.760 回答
1

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

文档: QDebug

于 2013-06-29T16:23:45.150 回答
1

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

于 2013-06-29T20:23:49.320 回答
0

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

于 2014-05-17T21:17:43.950 回答