自学内容网 自学内容网

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 中非常方便的字符串格式化工具,支持多种数据类型、宽度控制和多占位符替换。


原文地址:https://blog.csdn.net/qingyangwuji/article/details/145263754

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!