如何让qDebug编写方法和类名?
How make qDebug to write method and class name?
我想用qDebug
或qWarning
方法来编写调用它们的类和方法名。现在我像下面这样写,但对于我申请中的所有类和方法来说,这都是艰苦的工作。有谁知道我该怎么做?
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";
}
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 枚举环境变量的惯用C++14/C++17方法
- 如何让qDebug编写方法和类名?