qDebug(pattern, object1, object2)
it's basically the old fashioned fprintf(stderr, pattern, object1, object2)
, as such you depend on compiler support to avoid - for instance - to crash your program with wrong patterns, like int x; qDebug("%s\n", x);
. Well, GCC catches this one, but the compiler cannot always know if the pattern is appropriate, I think.
I always use qDebug() << object << ...;
, as the documentation states
If you include QtDebug, a more convenient syntax is also available:
qDebug() << "Brush:" << myQBrush << "Other value:" << i;
With this syntax, the function returns a QDebug object that is configured to use the QtDebugMsg message type. It automatically puts a single space between each item, and outputs a newline at the end. It supports many C++ and Qt types.
you can pass most of Qt objects to qDebug() << ... and get them rendered in readable way
try for instance qDebug() << QTime::currentTime();
qDebug() << QString( "%1 - %2" ).arg( "something1").arg( 42 );
– Auer