QString 功能强大,尤其是arg函数特别丰富好用,可用于对数字的长度的对齐,和不同数值之间进制转换后显示的字符串,以及%1 %2 %3等字符的替换。
1 arg 数值转字符串补齐长度
源函数如下:
fieldWidth :格式化后的字符串宽度;
base :指定将整数a转换为字符串时使用的基数(默认是十进制),还可以是二进制2 ,十六进制 16;
fillChar :待填充字符
QString QString::arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const
默认数值是3,填充长度为4,显示为10进制,长度不够就补0,最后字符串为“0003”
int num = 3;
QString str = QString("%1")
.arg(num, 4, 10, QChar('0'));
// str == "0003"
qDebug() << str;
对于浮点数,可通过QString::number来决定保留小数点的位数
QString str = QString::number(32, 'f', 2);
// str == "32.00"
qDebug() << str;
2 arg 数值按照进制格式化成字符串
将10进制的63变成16进制的3f
QString str;
str = QString("Decimal 63 is %1 in hexadecimal")
.arg(63, 0, 16);
// str == "Decimal 63 is 3f in hexadecimal"
qDebug() << str;
还可以根据不同国家的千位分隔符显示数值字符串
QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
QString str = QString("normal:%1 long split: %L2 hexadecimal: %L3")
.arg(12345)
.arg(12345)
.arg(12345, 0, 16);
// str == "normal:12345 long split: 12,345 hexadecimal: 3039"
qDebug() << str;
3 arg %1 %2…%99位置替换为字符
首先,arg(my)替换%1。然后arg(he)替换%2。最后,arg(word)替换%3。
QString my = "my";
QString he = " Hello ";
QString word = "Word";
QString str = QString("Look this is %1 And %2 : %3").arg(my).arg(he).arg(word);
qDebug() << str;
// 输出 str = "Look this is my And Hello : Word"