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

在QT5的帮助文档中,可以看出以下几点:

  1. 使用arg(str1, str2, str3)这种方法进行替换。

  2. 使用arg(str1).arg(str2).arg(str3)这种方法进行替换。

  3. ​使用arg(int, int, int)这种方式进行替换。

解释以下两种方法:

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

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

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

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

1
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

这也就意味着,如果有如下代码:

1
2
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
"1 2 3 4 5 6 7 8 9 %10 %11"

解决方法为在后面再加一个arg方法,放上后面两个对应的参数:

1
2
3
4
QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","w","6","7","8","9").arg("a","b");
//输出为:
// "1 2 3 4 5 6 7 8 9 a b"

注意:在QT5帮助文档中,给出了如下代码:

1
2
3
4
5
QString str;
str = "%1 %2";
str.arg("%1f", "Hello");        // returns "%1f Hello"
str.arg("%1f").arg("Hello");    // returns "Hellof %2"

如果你copy这个代码去测试一下,会发现,输出结果还是:"%1 %2" 。根本没有其给出的结果。(没找到源码,有谁知道怎么查看QT的源码,求帮助!说找src文件夹的就不要来了,根本木有)

所以在使用的时候一定要注意一下。要紧跟字符串使用arg( ) 。

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

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

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

简单说就是挨着替换呗。但请注意下面的形式:

1
2
3
4
5
6
7
8
9
str = QString("%1 %2").arg("%1World", "Hello");
qDebug()<<str;
//输出为:"%1World Hello"
str = QString("%1 %2").arg("%1World").arg("Hello");
qDebug()<<str;
//输出为:"HelloWorld %2"
//第一个arg执行完后变为:QString("%1World %2").arg("Hello")
//再次执行后"Hello"替换的为%1

所以在使用多个arg( )连接时,一定要注意,前面连接使用的arg( )里如果有“%+数字”的情况,后面的arg( )会同样替换!

请注意下列例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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("%3World").arg("Hello");
//输出:"%3World Hello"
str = QString("%1 %2").arg("%8World").arg("Hello");
//输出:"%8World Hello"
str = QString("%1 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%2 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%0 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%-1 %6").arg("%3World").arg("Hello");
//输出:"%-1 HelloWorld"

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

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

原型【1】为:

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

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

如下列:

1
2
3
4
5
6
7
8
9
10
11
12
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
//这里%L3的L没有任何作用

在原型【1】中的a的类型还可以是uint、long、double、udouble等数字的类型!

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

1
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数字。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
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"

菜鸟一枚,欢迎指出错误之处!

来自为知笔记(Wiz)

QString.arg()用法相关推荐

  1. Qt 字符串QString arg()用法总结

    原文:http://qimo601.iteye.com/blog/1420750 1.QString::arg()//用字符串变量参数依次替代字符串中最小数值 Cpp代码   QString i =  ...

  2. Qt 字符串QString arg()用法总结

    QString 有多种方法,我慢慢总结中~~~~~~~~~~~~ 1.QString::arg()//用字符串变量参数依次替代字符串中最小数值 QString i = "iTest" ...

  3. C++实现Qt中QString().arg().arg()...的用法

    以前,用Qt,现在用VS2015,在输出提示信息的时候,不是cout,就是printf,那个都没有用qt的时候QString().arg()-来的方便,又懒得百度c++有没有相似的用法,就自己写一个凑 ...

  4. boost::hana::arg用法的测试程序

    boost::hana::arg用法的测试程序 实现功能 C++实现代码 实现功能 boost::hana::arg用法的测试程序 C++实现代码 #include <boost/hana/fu ...

  5. QString::arg()//用字符串变量参数依次替代字符串中最小数值

    Cpp代码   QString i = "iTest";           // current file's number QString total = "tota ...

  6. Qt的格式化字符串:QString::arg()

    arg() 主要就看arg()原函数,还有第一条重载的arg()函数,往下的重载你应该知道怎么写了吧. QString::arg(const QString & a, int fieldWid ...

  7. QString之arg用法

    arg比c语言的printf封装更加高级和易用.主要是3类: 1.arg(str1, str2, str3) 2.arg(str1).arg(str2).arg(str3) 3.arg(int, in ...

  8. QT学习之QString的arg方法

    QString str = QString("%1:%2:%3").arg(hour, 2, 10, QLatin1Char('0')).arg(min, 2, 10, QLati ...

  9. QT中QString的所有类用法大全

    前言 之前用到QT中QString的用法,但总是忘记,这次自己整理出来,自己想用可以随时查看,同时也可以帮助到大家. 文章目录 前言 一.QString与其他变量的转换 1.QString::numb ...

最新文章

  1. python基础教程3-Python基础教程(三)
  2. C# 公共控件及程序制作流程
  3. Octave相关学习资源整理出
  4. 全球及中国手机便携式移动电源行业营销模式及投资竞争力分析报告2021-2027年版
  5. 使用tensorflow预测函数的参数值(a simple task)
  6. 全国计算机等级考试题库二级C操作题100套(第79套)
  7. 网管必须了解的理光复印机相关故障现相之一
  8. python3读取多行数据合并_python3 数据规整化:清理、转换、合并、重塑(一)
  9. LinkedHashMap如何保证有序
  10. matlab寻找直线_matlab寻找直线_Matlab 霍夫变换 ( Hough Transform) 直线检测
  11. Greenplum5.9.0简单使用
  12. mysql线上问题排查思路及常用命令
  13. 解决“网易邮箱提醒:一次被阻止的收信行为”
  14. 4、Mac下的谷歌浏览器输入不安全网址点高级后没有继续前往链接解决办法
  15. HDU-1863 畅通工程
  16. python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?
  17. 2.4G SOC芯片CI2451/CI2454应用于遥控玩具汽车的应用方案
  18. 淘宝电商数据分析-Python
  19. 灰色系统预测模型GM(1,1),GM(1,n)及Matlab实现
  20. java拯救苹果代码_java swing游戏编程高仿金山打字教程-拯救苹果

热门文章

  1. 20135333苏正生实验二实验报告
  2. 深入解读MIMO原理及测试方法
  3. 最好用的浏览器主页Speedceo——检索不套路
  4. c语言程序设计考试a答案,C语言程序设计考试A答案.doc
  5. 2020年3月计算机等级二级MS Office考试模拟软件是一款功能强大的全国计算机等级考试题库模拟软件
  6. linux常用指令60则
  7. 网站架构模式:前后端分离与前后端不分离
  8. Android手机6.0系统查询本地视频音频数据库查不出来数据的办法
  9. 2023年最新版Vue3(官方文档超细致教程一)
  10. 整理出来的200份Python零基础入门与数据分析资料,速领!