如何让qDebug编写方法和类名?

How make qDebug to write method and class name?

本文关键字:方法 qDebug      更新时间:2023-10-16

我想用qDebugqWarning方法来编写调用它们的类和方法名。现在我像下面这样写,但对于我申请中的所有类和方法来说,这都是艰苦的工作。有谁知道我该怎么做?

void File::downloadingFinishd()
{
qWarning()<<"File::downloadingFinishd()";//How write this ?without manually doing this?
qDebug()<<"Download was succceed";
}

我想要像android这样的东西,因为我在输出中看到它用不同的颜色编写方法和类名,只需调用qDebug()

使用Q_FUNC_INFO宏。

qDebug() << Q_FUNC_INFO << "debug stmt";         ==> Qt way
qDebug() << __PRETTY_FUNCTION__ << "debug stmt"; ==> c++ way

要着色,请使用此线程答案

看看https://doc.qt.io/qt-5/qtglobal.html#qSetMessagePattern

因此,您可以在main中使用例如.cpp:

int main(int argc, char *argv[])
{
qSetMessagePattern("%{function} %{message}");
...
}

Q_FUNC_INFO是 std pretty 函数的 Qt 版本。

来自Qt Doc:

常量字符* Q_FUNC_INFO

展开为描述宏所在的函数的字符串。 此字符串更具体的外观取决于编译器。跟 GNU GCC 它通常是函数签名,而与其他 编译器 它可能是行号和列号。

如果要避免客户端代码中的冗长,可以使用Q_FUNC_INFO定义自己的宏,例如:

#define qPrettyDebug() qDebug() << Q_FUNC_INFO
#define qPrettyWarning() qWarning() << Q_FUNC_INFO
void File::downloadingFinishd()
{
qPrettyWarning()<< "Download was succceed";
qDebug() << "here I don't want to print again the function context";
}