当前位置: 首页 > article >正文

QT 占位符的用法

这段代码是 Qt 中常用的字符串格式化方法,用于动态生成带有变量值的字符串。以下是详细的拆解和解释:
QString("Elapsed time: %1 seconds").arg(elapsed_seconds.count())

1. QString 的构造

QString(“Elapsed time: %1 seconds”) 创建了一个带有占位符的字符串。

%1 是 占位符,表示这个位置将会被后续 arg() 函数传入的值替代。
%1 以数字表示,占位符可以有多个,例如 %1、%2、%3 等,分别对应 arg() 函数中的第一个、第二个、第三个参数。
该字符串本质上是模板,允许动态插入内容。

2. arg() 方法

arg() 是 QString 的成员函数,用于替换占位符 %1, %2 等。
语法:

cpp
复制
编辑
QString QString::arg(const QVariant &value, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const;
value: 要插入到占位符中的值。
可以是基本类型(如 intdouble)或 QString 等。
如果是数字,arg() 会自动将其转换为字符串。
fieldWidth (可选): 设置占位符的宽度,默认值为 0。
如果指定宽度且值不足宽度,会用 fillChar 填充。
fillChar (可选): 填充字符,默认为空格字符 ' '

3. elapsed_seconds.count()

elapsed_seconds 是一个 std::chrono::duration 类型的对象。

count() 是 std::chrono::duration 的方法,用于获取该时间间隔的数值。
这里的返回值是一个 double 类型,表示经过的时间,以秒为单位。

4. 合成解释

完整表达式:

cpp
复制
编辑
QString("Elapsed time: %1 seconds").arg(elapsed_seconds.count())
模板字符串: "Elapsed time: %1 seconds" 中的 %1 是占位符。
插入值: arg(elapsed_seconds.count()) 将 elapsed_seconds.count() 的值(例如 2.00123)替换到占位符 %1 中。
生成结果: 得到完整的字符串,例如 "Elapsed time: 2.00123 seconds"

5. 使用多个占位符

如果模板字符串中有多个占位符(如 %1, %2, %3),可以依次传入参数:

cpp

复制
编辑
QString("Time: %1 seconds, Count: %2").arg(2.5).arg(10)
%1 被替换为 2.5%2 被替换为 10。
结果为:"Time: 2.5 seconds, Count: 10"

6. 常见用法

指定宽度和填充字符
cpp
复制
编辑
QString(“Elapsed time: %1 seconds”).arg(2.5, 8, ‘0’);
宽度为 8,不足部分用字符 ‘0’ 填充。
结果:“Elapsed time: 00002.5 seconds”。
多个动态值

cpp
复制
编辑
QString("Coordinates: X=%1, Y=%2").arg(123).arg(456);
替换 %1123,替换 %2456。
结果:"Coordinates: X=123, Y=456"

总结
QString(“Elapsed time: %1 seconds”).arg(elapsed_seconds.count()) 的作用是动态生成字符串,按顺序用 arg() 的参数替换字符串中的占位符 %1。它是 Qt 中非常方便的字符串格式化工具,支持多种数据类型、宽度控制和多占位符替换。


http://www.kler.cn/a/511920.html

相关文章:

  • leetcode347.前k个高频元素
  • 【Leetcode 热题 100】45. 跳跃游戏 II
  • 虚幻商城 Fab 免费资产自动化入库
  • 基于微信小程序的安心陪诊管理系统
  • 强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!
  • 郑州大学2022级大三期末复习总结(数据库,传感器,嵌入式,人工智能,移动终端开发,计算机英语)
  • Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件
  • 社群裂变+2+1链动新纪元:S2B2C小程序如何重塑企业客户管理版图?
  • 微软Win10 RP 19045.5435(KB5050081)预览版发布!
  • Android 11适配全攻略:从理论到实践
  • div水平垂直居中
  • 《链表之美:C语言中的灵活数据结构》
  • PostgreSql 创建稀疏索引
  • Java基础(2)
  • 语言模型的价值定位与技术突破:从信息处理到创新认知
  • 20250120 深入了解 Apache Flink 的 Checkpointing
  • Perplexity AI 周六向 TikTok 母公司字节跳动递交了一项提案
  • Linux:SystemV通信
  • 【2024 年度总结】从小白慢慢成长
  • 数据库高可用方案-04-删除策略
  • MySQL和SQL server的区别
  • DATAGerry 终端节点接口敏感信息泄露漏洞复现(CVE-2024–50967)(附脚本)
  • 基于STM32的智能门锁安防系统(开源)
  • React Context 实现全局组件注册
  • 【2024 CSDN博客之星】技术洞察类:从DeepSeek-V3的成功,看MoE混合专家网络对深度学习算法领域的影响(MoE代码级实战)
  • postgresql的用户、数据库和表