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

Alles rund um die Programmierung mit Qt
Antworten
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

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

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das sollte sein Problem lösen.
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von KarlBlau »

Bingo ... perfekt.
Vielen Dank!

Gruß, Karl
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag 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?
Dateianhänge
debugWindow.zip
(2.54 KiB) 172-mal heruntergeladen
Antworten