在我的 QT 应用程序中,如果我从终端运行应用程序,我希望在终端中打印一些实时信息。
当我使用 printf("print this") (在 main 中或在绘制事件期间)时,它不会打印,直到我关闭 gui。
为什么会这样,我怎样才能让它实时打印信息?(我使用的是linux)
谢谢!
要写入标准输出,您应该将其添加CONFIG += console
到您的项目文件配置中并cout
根据printf
自己的喜好使用。qDebug
默认打印到stderr
. 检查此主题以获取更多信息-使用 Qt 时如何打印到控制台
您可以使用qDebug() << ...
,qWarning() << ...
等。不要忘记包含<QDebug>
.
文档: QDebug
Qt 不会干扰 printf 输出。(在 Windows qmake(不是 Qt)上可以,但这不适用于 Linux)。但是,考虑到 stdout 的缓冲行为会导致printf("print this")
在缓冲区被刷新之前不会被打印。尝试使用 egfflush(stdout)
或简单地附加一个换行符:printf("print this\n")
以刷新缓冲区。不过,这根本与 Qt 无关。
您可能还想尝试添加CONFIG -= app_bundle
到您的.pro
文件中。