如何获取 QOpenGLContext 等常见 Qt5 类型的字符串表示形式?

How to get string representation of common Qt5 types like QOpenGLContext?

注意:这是一个相当天真的问题。

在调试和登录 Qt5 C++ 应用程序期间,打印内部变量的值很有用,在 Qt 常用的方法是 qDebug() 和这样的朋友一起使用:

qDebug()<<"The value was: "<< myVar;
// Usually works well even for built-in Qt types

这似乎适用于许多内置的 Qt5 特定类型,甚至指针,但是在我们实际上构建字符串而不是输出日志的情况下,这变得更加麻烦。

QString myString= "The value was: "+myVar;
// Usually doesn't work well for built-in Qt types

所以问题是,什么是获得内置 Qt 类型的等效字符串表示的通用方法,就像将它们流式传输到 qDebug() 所获得的一样?

或"what is the equivalent to Java toString() for Qt types"?

QDebug class documentation 我发现它有构造函数

QDebug::QDebug(QString *string)

Constructs a debug stream that writes to the given string

所以这应该有效:

QString myString;
QDebug stream(&myString);
stream <<"The value was: "<< myVar;

Qt 调试输出的格式内容 不是API 的一部分。他们可以随时更改。每次更新 Qt 时,您都必须审核输出,否则除了调试外,您不得依赖它。这就是为什么 API 故意让调试输出和字符串之间的转换变得麻烦。

相反,为您需要的类型实施您自己的 QTextStream 运算符,并使用流来构建字符串。