如何获取 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
运算符,并使用流来构建字符串。
注意:这是一个相当天真的问题。
在调试和登录 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
运算符,并使用流来构建字符串。