在我的 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文件中。