Qt for Windows, qDebug信息是输出到调试器的,不太方便,我写了个函数,可以打开一个console输出qDebug信息,在QT Windows Free Edition 3.3.4 for msvc下通过。
/****************************************************************
**
** Qt tutorial 1
**
****************************************************************/
#include <qapplication.h>
#include <qpushbutton.h>
#include <windows.h>
//#include <stdio.h>
//#include <stdlib.h>
//#include <stdarg.h>
void mydebug(const char *format, ...)
{
static int isInit = 0;
static char strbuf[8196];
va_list argList;
va_start(argList, format);
vsprintf(strbuf, format, argList);
va_end(argList);
if (!isInit)
{
AllocConsole();
isInit = 1;
}
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD n, m;
WriteConsoleA(h, strbuf, strlen(strbuf), &n, &m); //call non-unicode WriteConsoleA
}
void myMessageOutput( QtMsgType type, const char *msg )
{
switch ( type ) {
case QtDebugMsg:
mydebug("%s\n", msg );
break;
case QtWarningMsg:
mydebug("Warning: %s\n", msg );
break;
case QtFatalMsg:
mydebug("Fatal: %s\n", msg );
abort(); // deliberately core dump
}
}
int main( int argc, char ** argv )
{
qInstallMsgHandler( myMessageOutput ); // Installs a Qt message handler
QApplication a( argc, argv );
QPushButton hello( "Hello world!", 0 );
hello.resize( 100, 30 );
a.setMainWidget( &hello );
hello.show();
qDebug("Hello!");
return a.exec();
}
[ 此贴被fanyu在2005-10-08 14:17重新编辑 ]