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

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

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("十进制64转为十六进制%1").arg(64, 0, 16);

//0代表宽度,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()


相关文章
Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示。这玩意折腾了一上午。
704 0
|
10月前
16进制和字符串互转 #65
16进制和字符串互转 #65
81 1
【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细
【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细
|
11月前
|
数据格式
labview数据类型转换字符串文件路径进制转换小数格式等
labview数据类型转换字符串文件路径进制转换小数格式等
155 0
|
关系型数据库 MySQL
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
P5704 【深基2.例6】字母转换
P5704 【深基2.例6】字母转换
66 0
【程序填空】下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234
【程序填空】下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234
184 0
|
JavaScript 前端开发
Javascript之为数字添加货币(千位分隔符)格式同时保留小数点后两位
Javascript之为数字添加货币(千位分隔符)格式同时保留小数点后两位
201 0
Javascript之为数字添加货币(千位分隔符)格式同时保留小数点后两位
MFC中将编辑框文本转换成整数,从而实现两个整数相加。
在头文件中,定义三个控件变量,如m_data1,m_data2,m_sum; void Cuse_demo_dllDlg::OnBnClickedButton1(){ CString data1; CString data2; CString sum;  UpdateData(true);  ...
967 0
|
C#
C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式
     /// /// 判断是否十六进制格式字符串 /// /// /// public bool IsHexadecimal(string str) { const...
1169 0