2012-08-02 10 views

Odpowiedz

2

Aby przekierować QDebug do wielu miejscach, może trzeba napisać kod, może tak:

QList<QtMsgHandler> messageHandlers_; 

static void messageDispatcher(QtMsgType type, const char *msg) 
{ 
    foreach (QtMsgHandler callback, ::messageHandlers_) 
    callback(type, msg); 
} 

static void messageLogger(QtMsgType type, const char *msg) 
{ 
    QString output; 
    switch (type) { 
    case QtDebugMsg: output = QString("mesage: %1\n").arg(msg); break; 
    case QtWarningMsg: output = QString("warning: %1\n").arg(msg); break; 
    case QtCriticalMsg: output = QString("critical: %1\n").arg(msg); break; 
    case QtFatalMsg: output = QString("fatal: %1\n").arg(msg); break; 
    default: return; 
    } 

    QFile file("log.txt"); 
    if (file.open(QIODevice::WriteOnly | QIODevice::Append)) 
    QTextStream(&file) << output; 
} 

int main() 
{ 
    ... 
    ::messageHandlers_.append(messageLogger) 
    qInstallMsgHandler(messageDispatcher); 
    ... 
} 
+0

Ten kod nie działa. Nie jestem pewien, czy dzieje się tak z powodu literówek w próbce kodu (z których przynajmniej wydaje się, że jest co najmniej jedna), czy też dlatego, że Qt rozwija się od 2013 r., A odpowiedź używa przestarzałych połączeń. –

6

Można albo wyjściowego wszystko, aby wszystko do konsoli lub panelu Wyjście aplikacji Qt Stwórcy.

Dla zapewnienia kompletności: Jeśli chcesz mieć wszystkie dane wyjściowe w panelu zamiast konsoli, możesz odznaczyć opcję "Uruchom w terminalu" w menu Projekt-> Ustawienia uruchamiania.

+0

wiem, że ... ale chcę wyjście do dwóch różnych miejscach ... to dlaczego jego debugowania wydajność. – Eugene

+0

Niestety nie możesz tego zrobić. – Bojan

+2

Mam niezaznaczone "Uruchom w terminalu" i nadal nie widzę żadnych danych wyjściowych z mojej aplikacji. std :: cout, qDebug niczego nie wyprowadza – Dmitriy