2013-06-29 3 views
0

QT 응용 프로그램에서 터미널에서 응용 프로그램을 실행하면 터미널에 일부 실시간 정보가 인쇄되기를 원합니다.qt 터미널에 인쇄

내가 printf ("print this") (주 또는 페인트 이벤트 중에)를 사용하면 GUI를 닫을 때까지 인쇄되지 않습니다.

왜 그런가요? 어떻게 정보를 실시간으로 인쇄 할 수 있습니까? (나는 리눅스를 사용하고있다)

고마워!

+0

'qDebug() << "some text";'시도 했습니까? – Shf

+0

[Qt를 사용할 때 콘솔로 인쇄하는 방법] 중복 가능 (http://stackoverflow.com/questions/3886105/how-to-print-to-console-when-using-qt) –

답변

2

가 표준 출력에 기록하려면, 당신은 당신의 프로젝트 파일 설정이 CONFIG += console를 추가하고 원하는대로에 대한 printfcout를 사용해야합니다. qDebug은 기본적으로 stderr으로 인쇄됩니다. 자세한 내용은이 항목을 참조하십시오. - How to print to console when using Qt

+0

기본 메시지 처리기가 출력을 표준 출력으로 보내는 것으로 확신합니다. 나는 항상 그런 식으로 사용합니다. –

+0

@JacobRobbins 예,하지만 CONFIG + = console이 추가되지 않으면 stderr로 전송되기 때문에 qDebug를 제외하고 표시되지 않습니다. – Shf

+0

CONFIG + = console은 Windows에서만 필요합니다. Unix에서 printf, qDebug 등은 항상 콘솔에 출력됩니다 (qdebug가 비활성화되지 않은 경우). –

1

qDebug() << ..., qWarning() << ... 등을 사용할 수 있습니다. <QDebug>을 반드시 포함해야합니다.

문서 : QDebug

+0

고마워. 디버그 빌드에서? – Nathan

+0

qDebug()가 stderror로 인쇄하는 것 같아요. stdout으로 대신 인쇄 할 방법이 있습니까? – Nathan

+0

시도해 보셨습니까? [QDebug] (http://qt-project.org/doc/qt-4.8/qdebug.html#details) –

1

Qt는 printf 출력을 방해하지 않습니다. (윈도우즈에서 qmake (Qt가 아니라)는 리눅스에 적용되지 않는다). 그러나 stdout에 대한 버퍼링 동작은 버퍼가 플러시 될 때까지 printf("print this")이 인쇄되지 않는 것으로 간주합니다. 예를 들어보십시오. fflush(stdout) 또는 간단히 버퍼를 플러시하도록 줄 바꿈을 추가하십시오 (printf("print this\n")). 그것은 Qt와 전혀 관련이 없습니다.

0

파일에 CONFIG -= app_bundle을 추가 할 수도 있습니다.

관련 문제