我已经看到了一些使用qDebug的Qt代码,好像它是printf()
qDebug( format, ... );
大多数情况下,我看到它像std::cout
qDebug() << "one " << var_one;
使用方法有何不同之处,何时使用其中一种方式更正确/更好? Qt在线帮助似乎在某种程度上引用了函数版本,但从未解释过它。
答案 0 :(得分:7)
qDebug(pattern, object1, object2)
它基本上是旧式fprintf(stderr, pattern, object1, object2)
,因此您依靠编译器支持来避免 - 例如 - 使用错误的模式崩溃您的程序,例如int x; qDebug("%s\n", x);
。好吧,GCC抓住了这个,但是我认为编译器不能总是知道模式是否合适。
我总是使用qDebug() << object << ...;
,因为文档说明了
如果包含QtDebug,还可以使用更方便的语法:
qDebug() << "Brush:" << myQBrush << "Other value:" << i;
使用此语法,该函数返回一个配置为使用QtDebugMsg消息类型的QDebug对象。它会自动在每个项目之间放置一个空格,并在最后输出换行符。它支持许多C ++和Qt类型。
你可以将大多数Qt对象传递给qDebug()&lt;&lt; ......并以可读的方式呈现它们
尝试例如qDebug() << QTime::currentTime();