首页 > 其他分享 >【Qt 专栏】QString::arg()函数

【Qt 专栏】QString::arg()函数

时间:2024-04-26 10:56:23浏览次数:25  
标签:const Qt int 63 QString str arg

原文链接: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没有任何作用

 

标签:const,Qt,int,63,QString,str,arg
From: https://www.cnblogs.com/FBsharl/p/18159515

相关文章

  • qt封装dll并静态调用其它接口
    开发套件为QT5.9+MinGW编译器首先创建dll,第一步创建一个打开pro文件,因为我们创建的是app,需要的是dll,修改app->lib,注意不是dll其次,静态调用自己的底层库在工程中加入头文件,在pro添加dll的路径(注意这里静态调用没有用到lib文件)添加示例接口将编译的dll放入测试环境......
  • 【Qt 专栏】Qt:SQLite数据库操作示例
    转载自:https://blog.csdn.net/qq_40344790/article/details/129521573作者:DevFrank(CSDNC/C++ 优质创作者)1. sqlite介绍SQLite 是一种轻量级的嵌入式关系型数据库管理系统,它是一个开源的、零配置的、自包含的、事务性的SQL数据库引擎。SQLite的设计目标是简单、高效、可......
  • docker.from_env() 获取docker守护进程时出现 TypeError: load_config() got an unexp
    某天使用python重启docker容器时,出现了一个令人费解的BUG,我的代码为1defrestart_docker(container_name):2#连接到docker守护进程3client=docker.from_env()4try:5#获取容器对象6container=client.containers.get(containe......
  • 【python】pyqt中使用多线程处理耗时任务
    在PyQt中使用多线程通常是为了避免界面冻结,特别是在执行耗时的任务时。PyQt本身是基于Qt的,而Qt不允许在除主线程之外的线程中直接操作GUI元素。因此,任何涉及GUI更新的操作都应该在主线程中执行。importsysimportthreadingfromPyQt5.QtWidgetsimportQApplic......
  • Qt 中多线程对应的信号槽
    Qt中通过moveToThread方式来实现的多线程之间数据交互一般是通过信号槽来进行的,信号槽不仅可以用于同一个线程中,也可以用于多线程之间,当用于多线程之间时,其连接方式为Qt::QueuedConnection,即队列连接。多线程之间建立的信号槽主要为如下两个:主线程发送信号:来触发子线程的......
  • Python GUI开发- Qt Designer环境搭建
    前言QtDesigner是PyQt5程序UI界面的实现工具,使用QtDesigner可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用环境准备使用pip安装pipinstallpyqt5-toolsQtDesigner环境搭建在pip安装包的路径中,找到designer.exe文件......
  • 重庆软航H5 PDF签章产品经nginx代理之后在浏览器中在线打开PDF盖章时提示:签章失败:网络
    问题现象:问题描述:在系统中集成了软航H5PDF签章产品,软航H5PDF签章产品的对应服务是通过nginx代理的,在奇安信浏览器中在线打开PDF点击产品的工具栏上的盖章按钮:选定印章之后,在PDF文档上选定盖章位置之后,提示:签章失败:网络错误。最近在做这个软航H5PDF电子签章产品的测试,就简......
  • 【Qt 专栏】QByteArray详解(QByteArray 与 QString的区别)
    本文转自:《Qt编程指南》    作者:奇先生Qt编程指南,Qt新手教程,QtProgrammingGuide本节学习QByteArray的两种用法,第一种作为字符串处理类,类似QString,但QByteArray内部字符编码不确定,所以要慎用。第二种是作为纯的字节数组,里面可以包含多个'\0',经常用于网络数据的......
  • Qt/C++音视频开发71-指定mjpeg/h264格式采集本地摄像头/存储文件到mp4/设备推流/采集
    一、前言用ffmpeg采集本地摄像头,如果不指定格式的话,默认小分辨率比如640x480使用rawvideo格式,大分辨率比如1280x720使用mjpeg格式,当然前提是这个摄像头设备要支持这些格式。目前市面上有一些厂家做的本地设备支持264格式,这个压缩率极高,由于采集到的就是264格式的裸流,所以不用编码......
  • dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败
    本文将告诉大家如何修复dotnet项目里的多框架TargetFrameworks如果包含了当前系统无法支持的平台时,如何进行跳过。解决在Linux平台构建时提示MacCatalyst不受支持而构建失败故事的背景是我期望在GitHub的Action里面构建一个项目,我期望能够在Windows和Linux和Ma......