qtDebug()语法是如何工作的

时间:2016-01-09 06:10:31

标签: c++ qt

这是qt文档中提供的qDebug()的替代语法。

  

qDebug()<< “刷子:”<< myQBrush<< “其他价值:”<< I;

什么是“<<”运营商在这做什么?他们是否将字符串放入函数中?它是否允许使用c ++语法,或者只能在Qt中使用(因为文档也讨论了QtDebugMsg)

2 个答案:

答案 0 :(得分:4)

使用此语法(qDebug带空大括号)returns QDebug对象具有operator<< overloaded,并且每次操作符完成后返回引用QDebug对象,以便链接操作。

qDebug是一个宏,定义为:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug

因此,如果你写qDebug它会被上面的行替换,但QMessageLogger::debug是一个函数,而不是一个字段,所以你不能以这种方式访问​​它。显然,使用函数的正确方法是向其添加()。所以我们写qDebug()并在宏扩展后得到:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug()

这意味着:创建QMessageLogger类型的临时对象,并在其上调用debug方法。什么是debug方法?这是:QDebug debug() const;。因此,qDebug()行为我们提供了QDebug类型的临时对象。

然后在这个临时对象上我们调用operator<<(将使用哪一个取决于参数类型)。

答案 1 :(得分:0)

这是一个流操作员。

  

输出流使用插入(&lt;&lt;&lt;)运算符作为标准类型。你也可以重载&lt;&lt;你自己的班级的操作员。

以下是MSDN文档: https://msdn.microsoft.com/en-us/library/1z2f6c2k.aspx