可以全局设置qDebug()浮点精度和数字格式吗?

时间:2016-08-25 13:21:41

标签: c++ qt number-formatting

我想使用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。

2 个答案:

答案 0 :(得分:12)

QDebugcan be controlledQTextStream 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;含糊不清