2010-11-13 15 views
7

Piszę prosty program OpenGL z Qt Creator, który w zasadzie tworzy QGLWidget, pokazuje go i uruchamia pętlę aplikacji. I jak zwykle debugowania więcej z komunikatów diagnostycznych włączane i wyłączane za pomocą symboli preprocesora że zastosowanie rzeczywistej debugger i zegarki itp Qt Creator mamy zakładkę o nazwie Zastosowanie Wyjście, ale wszystko co widzę jest „Uruchamianie xxx.exe. xxx.exe zakończył się kodem 0 ". Brak danych wyjściowych z std::cout lub std::cerr. Teraz wiem, że mógłbym uruchomić moją aplikację z cmd.exe (tak, używam Windowsa, uwielbiam: P) i widzę tam wyjście, ale chciałbym móc zobaczyć wyjście bezpośrednio z IDE. Czy to jest możliwe? DziękiCzy mogę zobaczyć wyniki programu w Qt-Creator?

Odpowiedz

8

Zwykle ekran wyjściowy aplikacji działa dobrze. Czy na pewno zobaczysz dane wyjściowe z cmd.exe (czy rzeczywiście próbowałeś?)? Zwykle jest wyłączone dla aplikacji interfejsu użytkownika, aby uniknąć pojawiania się okien konsoli. Wypróbuj CONFIG += console. Sprawdź również, czy widzisz qDebug() wiadomości w Dane wyjściowe aplikacji.

+0

w Linuksie mam doświadczenie, że pokazane są wszystkie dane wyjściowe konsoli, tylko w systemie Windows qDebug będzie konsekwentnie pokazywał się w oknie. – rubenvb

+0

Jeśli twój program drukuje dużo danych wyjściowych w qtcreator, będzie zawieszony przez długi czas po zabiciu lub opuszczeniu celu debuggera. Niektóre algorytmy asynchroniczne w interfejsie qtcreatora powodują wzrost wykładniczy czasu realizacji w oparciu o liczbę linii wyjściowych. Tak było przez lata. – doug65536

+0

Nie wierz w to? Spróbuj 'int main() {while (1) std :: cout <<" Test "<< std :: endl; } ', pozwól, aby to działało przez kilka minut, i próbuj włamać się lub zabić program. YMMV. – doug65536

3

Alternatywnie, można sprawdzić w konsoli „run” ustawienie w projektu-> Uruchom opcji. Spowoduje to otwarcie nowego okna konsoli i wyświetli tam wszystkie dane wyjściowe konsoli (jeśli oczywiście użyto metody CONFIG += console).

5

prostu #include <QDebug> a następnie użyć qDebug zamiast cout jak

qDebug() << "you just clicked ok"; 

też to działa

#include <QTextStream> 
QTextStream out(stdout); 
out << "\nHello World!\n"; 

dodanie CONFIG += console w pliku .pro nie działa dla mnie. Zastanawiam się dlaczego?

Właśnie odkryłem, że muszę dodać "endl;" dla cout pracować jak

cout << "print this" << endl; 
+0

zdecydowanie poprawna odpowiedź! – DH1TW

0

Spróbuj: Narzędzia -> Opcje W zakładce "Ogólne" "Środowiska" zmień pozycję końcową od:

x-terminal-emulator -e 

do

xterm -e 
Powiązane problemy