【问题标题】:cout does no print in QtCreatorcout 在 Qt Creator 中不打印
【发布时间】:2011-09-27 08:04:33
【问题描述】:

我已经在这个论坛上看到了这个问题,但我不知道为什么建议的答案在我的情况下不起作用。所以我尝试要求其他解决方案。

我刚刚让我的 Qt 创建器在 Linux 下运行。

我不明白为什么我的:

cout << "This does not appear";

qdebug 打印时不在控制台打印

qDebug() << "This appears";

这是我的 .pro 文件中包含的内容:

QT       += core gui

TARGET = aaa
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    IeplcModule.cpp

HEADERS  += mainwindow.h \
    IeplcModule.h

FORMS    += mainwindow.ui

#enable console
CONFIG += console

有什么想法吗?

【问题讨论】:

  • cout &lt;&lt; "This does not appear" &lt;&lt; flush; 也许是这个?
  • 程序停止时是否出现输出?如果是,则可能只是缺少刷新(添加 std::endl)
  • 是的...确实...谢谢大家!
  • 直接显示调试输出。 &lt;iostream&gt; 等效于 qDebug() 是 cerr &lt;&lt;,也不需要刷新。

标签: c++ qt stdout cout


【解决方案1】:

当使用 CDB(Windows 调试器)进行调试并不在专用终端窗口中运行应用程序时,而是在 QtCreator 输出面板中,有一个 issue 和 std::cout/std::cerr。 qDebug 之所以有效,是因为它对这种情况有一个窍门。 因此,在这种情况下,唯一的解决方案是启用“在终端中运行”选项。 如需更多信息,请点击上面的 Qt 错误跟踪器链接。

【讨论】:

    【解决方案2】:

    尝试:

    cout << "asdf" << endl;
    

    Qt 可能会设置 iostream 以便仅在新行刷新。

    【讨论】:

    • +1 对于正确的答案和解释,顺便说一句,你不建议像每个人一样使用 qDebug()。
    • 其实endl是换行plus刷新命令。类似于"\n" &lt;&lt; flush
    【解决方案3】:

    你#include &lt;iostream&gt;了吗?我没有在代码中看到任何包含。 我假设qdebug 和cout 非常相似。

    【讨论】:

    • 这个问题已经被接受的答案解决了。
    【解决方案4】:

    STDOUT 是否可能正在重定向? qDebug prints to STDERR by default.

    【讨论】:

      【解决方案5】:

      确保您在 .pro 文件中启用了 console 配置。 IE。 :

      CONFIG += console
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-29
        • 2011-12-25
        • 2018-04-03
        • 2016-10-10
        • 2018-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多