我想使用qDebug(),qInfo()等自定义默认浮点精度和数字格式。
有没有办法全局定义?
想象一下:
double num = 1.2;
qDebug() << "My floating point Number is: " << QString::number(num, 'f', 2);
//Output: My floating point Number is 1.20
现在我想在每次写一个数字时避免使用QString :: number(num,'f',2),而且更喜欢使用标准的percision和format。
答案 0 :(得分:12)
QDebug
流can be controlled到QTextStream
manipulators的格式设置。因此,您必须致电
qDebug() << fixed << qSetRealNumberPrecision(2);
在您的计划开始时。
但请注意,qDebug()
的格式化状态可能会稍后更改,如果某些(未经过仔细编写)代码设置所需的格式设置,并且在完成其作业后不会将其还原到以前的状态。
修改强>
事实证明QTextStream
操纵器(至少与qDebug()
组合)的效果仅限于包含语句,并且不会持久存在。因此,您可以做的最好的事情是定义qDebug()
的替换,如下所示:
#define myqDebug() qDebug() << fixed << qSetRealNumberPrecision(2)
并使用它代替qDebug()
:
double num = 1.2;
myqDebug() << "My floating point Number is: " << num << endl;
输出:
My floating point Number is: 1.20
答案 1 :(得分:2)
你不能。
qDebug()
,qFatal()
等...返回班级QDebug
的实例。
问题是运算符QDebug::operator<<(float f)
是非虚拟类成员函数
如果没有收到编译错误消息,则无法定义另一个
运营商LT;&LT;含糊不清