QT中的类型转换
1、int类型转换成QString类型
(1)比如要将int 类型的数据转换成QString类型展示在桌面上
代码:
int a = 32;
QString strTemp = QString::number(a,10);//QString QString::number(int n, int base = 10)
(2)QString转int,可以直接调用QString的转化函数
QString b = "32";
int a = b.toInt(nullptr,10);
2、指定位数输出
(1)int类型数据转换QString类型按指定位数输出显示
这里我一般用QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
例如:int类型10,转换为QString类型,保留2为16进制数,位数不够补零
int a = 10;
QString strTemp = QString("%1").arg(a,2,16,QLatin1Char('0'));//strTemp = "0A"
(2)float类型转换成QString,按指定位数输出
float f = 10.23456;
QString strTemp = QString::number(f,'f',2);//f保留两位小数,strTemp = 10.23
3、其他类型转换
(1)char 与 QString的转换
char a='b';
QString str;
str=QString(a);
(2)QString 转换为 char
QString str="abc";
char *ch;
QByteArray ba = str.toLatin1()
ch = ba.data();
注意:在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *ch = str.toLatin1().data();会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。
(3)QByteArray 与 char* 的转换
- QByteArray 转换为 char *
char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();
- char * 转换为 QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
(4)QString 与 QByteArray 的转换
- QString转换为QByteArray
QByteArray byte;
QString string;
byte = string.toAscii();
- QByteArray 转换为 QString
QByteArray byte;
QString string;
string = QString(byte);
(5)QString与string的转换
-
QString --> string
QString.toStdString(); -
string --> QString
QString::fromStdString(string)
(6)QString与int,double,char *的转换
- QString --->int,double,char *
QString::toInt()
QString::toDouble()
QString.toStdString().c_str();
(7)QDateTime转QString
QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss"); //2021年10月18日Monday13:48:55

浙公网安备 33010602011771号