QString格式化的几种用法:补零/进制转换/保留小数位等

本文详细介绍QString的格式化方法,包括自动补零、进制转换、数字转换为QString并保留小数点位数,以及QString与其他字符串类型的转换。同时,讲解了arg函数对浮点数的精度控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

1、QString格式化arg前面自动补0

int seconds = m_calc.elapsed() / 1000;
int hour = int(seconds / 3600);
int min = int((seconds - hour * 3600) / 60);
int sec = seconds % 60;

//QString格式化arg前面自动补0
QString str = QString("%1:%2:%3").arg(hour, 2, 10, QLatin1Char('0')).arg(min, 2, 10, QLatin1Char('0')).arg(sec, 2, 10, QLatin1Char('0'));
QStringList list;
list << tr("%1").arg(hour) << tr("%1").arg(min) << tr("%1").arg(sec);

int val = 16;
//0f
QString str = QString("%1").arg(val & 0xFF, 2, 16, QLatin1Char('0'));
 
//0016
QString str = QString("%1").arg(val, 4, 10, QLatin1Char('0'));
//4代表宽度,10表示10进制,空位补零

2、进制转换

QString ss = QString("十进制67转为十六进制%1").arg(67, 0, 16);
//0代表宽度,16表示16进制,空位补零

16进制的字符串转16进制整数

QString str = "3010";

bool ok = false;

int hex = str.toInt(&ok, 16);//16表示16进制;10表示10进制

int转换成16进制格式存入QString

int data = 0x3010;

QString hex = QString::number(data, 16); //16表示16进制

3、数字转QString,并保留小数点位数

//整数转QString
int num1=123;
QString str1 = QString::number(num1);
qDebug()<<"str1:"<<str1<<endl;

//小数转QString,保留两位小数
double num2 = 123.456789;
QString str2=QString::number(num2,'f',2);
qDebug()<<"str2:"<<str2<<endl;

4、数字转QString,使用asprintf

ui->comboBox_pulse->addItem(QString::asprintf("%d", PULSE_LOW));
ui->lineEdit_x->setText(QString::asprintf("%.3f", m_stuMotionPos.X));

5、QString中的arg还可以对浮点类型的数字按照一定的精度来转换

QString QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const

Format Meaning
e      format as [-]9.9e[+|-]999
E      format as [-]9.9E[+|-]999
f      format as [-]9.9
g      use e or f format, whichever is the most concise
G      use E or f format, whichever is the most concise

QString ss = QString("delta %1").arg(123.45678, 0, 'g', 6);

结果是ss="delta 123.456"。浮点类型格式化为只显示六位有效数字,并且是采用四舍五入的方式。

6、QString/string/wstring的转换

QString::fromStdString()

QString::fromStdWString()

str.toStdString()

QObject::tr("位置超出范围").toStdWString()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值