【Qt 专栏】QString::arg()函数
1.【Linux QT】野火 IMX6 移植QT(按正点教程)遇到的一系列困难的解决历程2.Qt SQL API相关操作3.【Qt 专栏】QT定时任务- timerEvent事件使用以及和QTimer 定时器的使用区别4.用于 Qt 的 OpenCV 编译 (CMake 方式) 问题解决5.【Qt 专栏】项目的打包发布6.【Qt 专栏】 资源文件过大的处理方法(生成rcc文件)7.【Qt 专栏】sqlite INT关键字与AUTOINCREMENT关键字的冲突8.【Qt 专栏】DateTime日期时间组件9.【Qt 专栏】文件对话框 文件的弹窗选择-QFileDialog10.【Qt 专栏】Qt 程序一运行就崩溃和结束时崩溃的问题解决
11.【Qt 专栏】QString::arg()函数
12.【Qt 专栏】SQLite数据库操作示例13.Qt 图片通过网络Tcp传输——OpenCV的图片编码函数imencode()14.【Qt 专栏】QByteArray详解(QByteArray 与 QString的区别)15.【Qt 专栏】Qt Creator 的 git 配置 & 上传到gitee16.【Qt之JSON文件】QJsonDocument、QJsonObject、QJsonArray等类介绍及使用原文链接:https://blog.csdn.net/Gnar_w/article/details/134966919
作者:Gnar_w (CSDN)
一、说明
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(仅有些许类似)。
二、使用
有以下方式:
- 使用arg(str1, str2, str3)这种方法进行替换。
- 使用arg(str1).arg(str2).arg(str3)这种方法进行替换。
- 使用arg(int, int, int)这种方式进行替换。
1. arg(str1,str2,str3)
要求:三个均为const QString &类型。
QString QString::arg(const QString & a1, const QString & a2, const QString & a3) const
同时,arg里的参数实现从1个到9个,即最多只能有9个
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将只会输出:(因为最多只有9个)
"1 2 3 4 5 6 7 8 9 %10 %11"
解决方法:(在后边加一个arg方法,放上超出的参数)
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"
2. arg(str1).arg(str2).arg(str3)
注:
- 在使用多个arg( )连接时,前面连接使用的arg( )里如果有 “%+数字” 的情况,后面的arg( )会同样替换;
- arg( )里的参数在进行替换时,只会按照数字从小到大的顺序进行替换,只有比当前数字小的所有数字都替换完成了,才会替换当前数字,否则将当前数字和%按字符串处理。且数字为自然数。
例:
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", "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
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"
3.arg(int,int,int)
在原型中的a的类型可以是uint、long、double、udouble等数字的类型。
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
//这里%L3的L没有任何作用
三、补充:Qt中int转变为String的几种办法
在QT中,可以使用QString类的多种方法将int转换为string。以下是一些常见的方法:
-
使用QString::number方法
int num = 123;
QString str = QString::number(num);
-
使用QVariant和其toString方法
int num = 123;
QVariant variant(num);
QString str = variant.toString();
-
使用QString的sprintf方法
int num = 123;
QString str;
str.sprintf("%d", num);
-
使用QString的arg方法
int num = 123;
QString str = QString("%1").arg(num);
合集:
Qt 专栏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-04-26 《R语言入门与实践》第二章:R包和帮助文档