QString的arg()函数格式化输出double类型数值,包括fieldWidth、fmt、prec和fillChar参数的作用。示例代码展示了如何设置精度和填充字符,以及字段宽度的影响。文中提到,当fieldWidth小于实际长度时,前面的填充不会被截断。此外,还建议不熟悉Qt格式化的开发者可以使用标准的sprintf函数作为替代。
Q_REQUIRED_RESULT QString arg(double a, int fieldWidth = 0,
char fmt = 'g', int prec = -1,
QChar fillChar = QLatin1Char(' ')) const;
1. double 直接格式化
double length = 2.55;
QString str = QString::number(length , 'f', 2);
其中f代表非科学计数法格式,2代表小数点后两位。
2. 添加字符串同时格式化 double
double distance= 2.23355;
QString showText = QString("距离:%1").arg(distance, 6, 'f', 2, ' ');
-- fieldWidth参考表示总共占多少位。这里2.23355,包括小数点总共6位;
-- fmt = 'g' 表示使用科学计数法;'f'表示浮点格式;
--prec 是表示precision,也就是小数点后几位的意思;
--fillChar表示填充,这里用的空格 ' ',例如23,45只有5位,前面用’ ‘填充,所以格式化后就是'23.45';
这里填充的是空格 ' '; 因为是数字
注意:
参数fieldWidth如果少于实际的话,比如这里是5的话,123.12还是会格式化为123.12,但23.45不会再显示为023.45,而是23.45;也就是前面只会填充,但不会截断。
其余的定义如short,ushort,int等道理相同。
3. 添加字符串同时格式化 double ,多个参数
double length = 212.4567;
double height= 323.12345;
QString showText = QString("length: %1,height : %2").arg((double)length, 6, 'f', 2, '0')
.arg((double)height, 6, 'f', 2, '0');
-- fieldWidth参考表示总共占多少位。这里212.4567,包括小数点总共7位, 会省略 一位
-- fmt = 'g' 表示使用科学计数法;'f'表示浮点格式;
--prec 是表示precision,也就是小数点后几位的意思;
--fillChar表示填充,这里用空格代替,如用是’0‘,例如12.451只有5位,前面用’0‘填充,所以格式化后就是'012.451';
4. 将 int 整型数转成固定长度的QString
QString str = QString(%0).arg(1, 4, 10, QChar('0'));
将数字1转成“0001”的QString表示的方法为: