Seite 1 von 1

[gelöst] qDebug ohne Zeilenwechsel, qDebug Ausgabe umleiten

Verfasst: 21. August 2005 15:30
von KarlBlau
Hi,

gibt es die Möglichkeit bei qDebug() den Zeilenwechsel, der automatisch gesetzt wird, wegzulassen?

Noch eine Frage:
Ist es möglich die Ausgabe von qDebug in einem Fenster unterzubringen, in einem Textfeld oder irgendwas? Standardmäßig wird die Sache ja in der Konsole ausgegeben.

Gruss, Karl

Verfasst: 21. August 2005 18:52
von BartSimpson
Du kannst doch ein QTextEdit nehmen, was du in einem extra Dialog anzeigst und es denn mit .append() fütterst. Ein extra umbiegen ist mir nicht bekannt.
Das ganze kannst ja mit #ifdef XXDEBUG oder so machen, das das QTextEdit nur im Debugmodus kommt.

Verfasst: 22. August 2005 09:16
von FlorianBecker

Verfasst: 22. August 2005 10:48
von BartSimpson
Das sollte sein Problem lösen.

Verfasst: 22. August 2005 14:53
von KarlBlau
Bingo ... perfekt.
Vielen Dank!

Gruß, Karl

Verfasst: 17. Oktober 2006 18:35
von mikro
Nachdem in dem endlich erschienenen Buch "Qt4 Einführung in die Applikationsentwicklung" gezeigt wird, wie man qInstallMsgHandler verwendet um die Debugging-Info in ein simples Textfenster umzuleiten hab ich das noch ein bischen verfeinert:
wenn man beiliegenden Dateien verwendet, laufen alle Meldungen in einem seperaten Fenster, in dem kann man:
- drucken
- speichern
- mittels Regexp alle Zeilen markieren lassen, die einem Ausdruck entsprechen.
und im Gegensatz zu dem Beispiel im Buch schliesst sich das Fenster auch brav, wenn man das hauptfenster schliesst.
Voraussetzung ist, dass die main.cpp z.B. so ausschaut:

Code: Alles auswählen

#include "MainWindow.h"
#include "debughandler.h"
//
int main( int argc, char ** argv ) {
    QApplication app( argc, argv );
    DebugWindow* deb = DebugWindow::self();
	qInstallMsgHandler(debugWinMsgHandler);

    QLocale loc;
    QString locale = QLocale::languageToString(loc.language());
    qDebug() << "decided to use language " << locale;
    QTranslator translator;
    translator.load(QString("translations/werter_") + locale.toLower());
    app.installTranslator(&translator);

    MainWindow mw;
    mw.show();
    //
    app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
    app.connect( &mw, SIGNAL(closing()), deb, SLOT(close()));
    return app.exec();
}
(vorausgesetzt die Klasse für das Hauptfenster heisst MainWindow)
und vorausgesetzt, man fängt in MainWindow das CloseEvent ab und sendet ein Signal void closing().

Leider hab ich kein Signal gefunden, dass ein QMainWindow beim schliessen automatisch aussendet, das man verwenden könnte um das debugWindow zu schliessen. Gibts da was?