Seite 1 von 1

qDebug() to file

Verfasst: 14. Juli 2011 15:58
von sooofunky
Und nochmals eine Frage...

Möchte Benutzer Interaktion (zB. Button Click) per File mitloggen und habe diesen Code:

Code: Alles auswählen

void SimpleLoggingHandler(QtMsgType type, const char *msg) {
	QString txt;
	switch (type) {
	case QtDebugMsg:
		txt = QString("Debug: %1").arg(msg);
		break;

	case QtWarningMsg:
		txt = QString("Warning: %1").arg(msg);
	break;
	case QtCriticalMsg:
		txt = QString("Critical: %1").arg(msg);
	break;
	case QtFatalMsg:
		txt = QString("Fatal: %1").arg(msg);
		abort();
	}

	QFile outFile("/home/dayo/mylog.txt");
	outFile.open(QIODevice::WriteOnly | QIODevice::Append);
	QTextStream ts(&outFile);
	ts << txt << endl;
    }
Wenn ich dann qInstallMsgHandler(SimpleLoggingHandler) aufrufe bekomme ich folgenden Fehler:

argument of type ‘void (Test4::)(QtMsgType, const char*)’ does not match ‘void (*)(QtMsgType, const char*)’

Was mache ich falsch?

Verfasst: 14. Juli 2011 18:17
von Christian81
Die Funktion muss schon statisch sein - ansonsten: minimales Beispiel...

Verfasst: 14. Juli 2011 18:56
von sooofunky
Danke für die Antwort - tut mir leid, habe sie aber nicht ganz verstanden. Meinst du mit minimales Beispiel zu wenig Kontext?

habe nun SimpleLoggingHandler(QtMsgType, char const*) statisch gesetzt und bekomme folgenden Fehler:

undefined reference to `Test4::SimpleLoggingHandler(QtMsgType, char const*)'

Verfasst: 14. Juli 2011 18:59
von Christian81
Wenn man in der Klasse Test4 die Funktion definiert und sie dann später nicht implementiert (sondern nur eine Funktion außerhalb von Test4 mit dem gleichen Namen) sollte man sich nicht wundern -> C++ Grundlagen