cout does no print in QtCreator
I saw this question already on this forum but I do not know why the proposed answer does not work in my case. So I try to ask for other slution.
I just got my Qt creator running under Linux.
I do not understand why my:
c开发者_如何学Cout << "This does not appear";
Does not print in console while qdebug does
qDebug() << "This appears";
This is what is contained in my .pro file:
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
Any idea?
Try with:
cout << "asdf" << endl;
Possibly Qt sets up iostream in order to flush only at new line.
When debugging with CDB (Windows debugger) and running application not in the dedicated terminal window, but within QtCreator output panel, there is an issue with std::cout/std::cerr
.
qDebug works because it has a trick for this case.
So, the only solution in this case is enable the "run in terminal" option.
For more infor please follow the link above to the Qt bug tracker.
Is it possible that STDOUT is redirecting? qDebug prints to STDERR by default.
Did you #include <iostream>
? I did not see any includes in the code.
I assume that qdebug
and cout
are very similar.
Make sure you have console
config enabled in your .pro
file. I.e. :
CONFIG += console
You can run this program from CMD and it will print some messages to the console:
/* 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();
}
精彩评论