QT学习:QString的arg方法

转载自:http://www.mincoder.com/article/3423.shtml

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 


在QT5的帮助文档中,有如下几种用法: 
使用arg(str1, str2, str3)这种方法进行替换。 
使用arg(str1).arg(str2).arg(str3)这种方法进行替换。 
使用arg(int, int, int)这种方式进行替换。

一、使用arg(str1, str2, str3)

这种方法要求str1、str2、str3都为const QString &类型,即:

QString QString::arg(const QString & a1,const QString & a2,const QString & a3)const

同时,arg( )里的参数实现从1个到9个,也就是说最多只能有9个!即在实现中,arg的定义中参数最多的为: 

QString QString::arg(const QString & a1,const QString & a2,const QString & a3,const QString & a4,const QString & a5,const QString & a6,const QString & a7,const QString & a8,const QString & a9)const 
这也就意味着,如果有如下代码: 

QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","5","6","7","8","9")

str将只会输出: 

"1 2 3 4 5 6 7 8 9 %10 %11" 

二、使用arg(str1).arg(str2).arg(str3) 

这种方法其实前面用到了,如下面例子:

QString str=QString("%1 %2 %3 %4").arg("A").arg("B").arg("C").arg("D");
//str=="A B C D"

简单说就是挨着替换,例子如下:

str = QString("%1 %2").arg("%1World").arg("Hello");
//输出:"HelloWorld %2"
str = QString("%1 %2").arg("%2World").arg("Hello");
//输出:"HelloWorld Hello"
str = QString("%1 %2").arg("%8World").arg("Hello");
//输出:"%8World Hello
str = QString("%-1 %6").arg("%3World").arg("Hello");
//输出:"%-1 HelloWorld"

arg( )里的参数在进行替换时,只会按照数字从小到大的顺序进行替换,只有比当前数字小的所有数字都替换完成了,才会替换当前数字,否则将当前数字和%按字符串处理。

三、使用arg(int, int, int) 

QString QString::arg(int a,int fieldWidth = 0,int base = 10, QChar fillChar = QLatin1Char(' '))const 

a:表示要处理的数字;fieldWidth:字宽;base:数字基数 

如下列: 

str = QString("十进制 63 的十进制为 %1") 
            .arg(63,0,10); 
//输出:"十进制 63 的十进制为 63" 
str = QString("十进制 63 的十六进制为 %1") 
            .arg(63,0,16); 
//输出:"十进制 63 的十六进制为 3f" 
str = QString("%1 %L2 %L3") 
            .arg(12345) 
            .arg(1987654321)   //根据结果,可知道这个L的作用 
            .arg(12345,0,8);   //但使用这种方式时,L失效 
//输出为:12345 1,987,654,321 30071

这里当a的类型为double时,原型为:

QString QString::arg(double a,int fieldWidth = 0,char format ='g',int precision = -1, QChar fillChar = QLatin1Char(' '))const 

多了两个参数:format和precision,一个指明规格,一个指明精度。规格默认为 'g' 或 'G',指示后面的精度为整数和小数部分总和的长度;规格为'e'或 'E' 时,表示为科学记数法形式,精度部分指示的为小数部分的位数长度;规格为其他字符时,无作用,输出原double数字。如: 

double d = 12.345689;
str = QString("delta: %1").arg(d, 0,'g',4);
//输出为:"delta: 12.35"     ---这里进行了四舍五入
str = QString("delta: %1").arg(d, 0,'G',5);
//输出为:"delta: 12.346"     ---这里进行了四舍五入
str = QString("delta: %1").arg(d, 0,'e',4);
//输出为:"delta: 1.234e+01"
str = QString("delta: %1").arg(d, 0,'E',4);
//输出为:"delta: 1.234E+01"
str = QString("delta: %1").arg(d, 0,'r',4);
//输出为:"delta: 12.345689"
str = QString("delta: %1").arg(d, 0,'Q',4);
//输出为:"delta: 12.345689"

 

posted @ 2016-03-30 20:53  npucloud  阅读(630)  评论(0编辑  收藏  举报