0

我想让qDebugorqWarning方法写出调用它们的类和方法名。现在我写如下,但我的应用程序中的所有类和方法都很难工作。有人知道我该怎么做吗?

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

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

4

3 回答 3

2

利用 Q_FUNC_INFO 宏。

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

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

于 2020-06-05T15:22:56.457 回答
2

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

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

int main(int argc, char *argv[])
{
    qSetMessagePattern("%{function} %{message}");
    ...
}
于 2020-06-05T15:41:29.707 回答
1

Q_FUNC_INFO是 Qt 版本的 std 漂亮函数。

来自Qt 文档

const char* Q_FUNC_INFO

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

如果您想避免客户端代码中的冗长,您可以使用 a 定义自己的宏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";
}
于 2020-06-05T15:43:56.450 回答