c++ 在QtCreator中未打印cout

sqxo8psd  于 2023-02-01  发布在  其他
关注(0)|答案(6)|浏览(526)

我已经在这个论坛上看到这个问题了,但是我不知道为什么这个答案对我不起作用,所以我试着问其他的答案。
我刚刚让我的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

你知道吗?

fdx2calv

fdx2calv1#

尝试:

cout << "asdf" << endl;

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

5kgi1eie

5kgi1eie2#

当使用CDB(Windows调试器)进行调试,并且不在专用终端窗口中运行应用程序,而是在QtCreator输出面板中运行应用程序时,issuestd::cout/std::cerr。qDebug工作正常,因为它对这种情况有一个技巧。因此,这种情况下唯一的解决方案是启用“在终端中运行”选项。有关更多信息,请访问上面的Qt错误跟踪器链接。

6qftjkof

6qftjkof3#

默认情况下,STDOUT是否可能将?qDebug打印重定向到STDERR。

vlju58qv

vlju58qv4#

你有#include <iostream>吗?我没有看到任何包含在代码中。我假设qdebugcout非常相似。

kmb7vmvb

kmb7vmvb5#

请确保在.pro文件中启用了console配置,即:

CONFIG += console
mpgws1up

mpgws1up6#

您可以从CMD运行此程序,它将向控制台打印一些消息:

/* Create a .pro file with this content:
QT += core gui widgets
SOURCES += main.cpp
TARGET = app
-------------------------------
Build and run commands for CMD:
> qmake -makefile
> mingw32-make
> "release/app"
*/

#ifdef _WIN32
#include <windows.h>
#endif

#include <QtCore/QFile>
#include <QtCore/QString>
#include <QtCore/QIODevice>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>

#include <iostream>

class Widget : public QWidget
{
public:
    Widget()
    {
        setWindowTitle("My Title");
        QString path("assets/text.txt");
        std::cout << std::endl;
        std::cout << "hello1" << std::endl;
        std::cout << path.toStdString() << std::endl;
        std::cout << "hello2" << std::endl;
    }
};

int main(int argc, char *argv[])
{
#ifdef _WIN32
    if (AttachConsole(ATTACH_PARENT_PROCESS))
    {
        freopen("CONOUT$", "w", stdout);
        freopen("CONOUT$", "w", stderr);
    }
#endif

    QApplication app(argc, argv);
    Widget w;
    w.show();
    return app.exec();
}

相关问题