2017-02-27 65 views
0

注意:这是一个相当天真的问题。如何获得像QOpenGLContext的常见Qt5类型的字符串表示形式?

期间在QT5C++应用程序打印内部变量的值,它是有用的调试和记录,并在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得到()?

或“Qt类型的Java toString()等效于什么”?

+0

无论谁投票结束这个问题,我真的想知道你的理由!它怎么可能被视为“基于意见”?那究竟是什么意见?谢谢! –

回答

2

QDebug class documentation我能找到它具有构造

QDebug::QDebug(QString *string) 

构造一个写入给定的字符串

调试流所以这应该工作:

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

格式内容的Qt调试输出不属于API的一部分。他们可以随时更改。每次更新Qt时,您都必须对输出进行审计,否则除调试以外不得依赖它。这就是为什么这些API使得在调试输出和字符串之间进行转换时有目的的麻烦。

相反,请为您需要的类型实现您自己的QTextStream运算符,然后使用该流构建字符串。

+0

这种转换的有用性和便利性是否可以说超过了这些担忧?在最坏的情况下,在文档中可以明确提到,在任何情况下,输出都不应该用于除调试之外的其他目的。 –

+0

如果您正在调试,请使用'qDebug'。您可以重新实现消息处理程序来捕获输出,例如记录等等,但是您根本不需要手动处理字符串转换。 –

相关问题