QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或者其他的字符编码集。QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、toFloat()、toLong()、toLongLong();



1、 int, float , double类型 转换为QString


有两种方法:
A . 使用arg


long a = 36;QString s = QString("%1").arg(a); // s == "36" // int 转 QSting


QString stepInfo = tr("Time: <b>%1</b>").arg(QString::number(timestamp,10), 8, '0'); //10进制,8位,不足补0






B . 使用QString::number() ;


long a = 63;QString s = QString::number(a, 10); // s == "63"QString t = QString::number(a, 16).toUpper(); // t == "3F" //toUpper: 大写



1. ​​static QString number(int, int base=10);​​
2. ​​static QString number(uint, int base=10);​​
3. ​​static QString number(long, int base=10);​​
4. ​​static QString number(ulong, int base=10);​​
5. ​​static QString number(qlonglong, int base=10);​​
6. ​​static QString number(qulonglong, int base=10);​​
7. ​​static QString number(double, char f='g', int prec=6);​​

第二参数可省略,省略时为10,表示10进制;

2、 QString 转换为 int类型



基数默认为10,基数须在2到36之间;


Qstring str="FF";bool ok;int dec=str.toInt(&ok,10); //dec=255 ; ok=true //QString 转 intint hex =str.toInt(&ok,16); //hex=255;ok=true; //QString 转 int


3、 QString 转换为 double类型




QString str="123.45";double val=str.toDouble(); //val=123.45 //QString 转 double



bool ok;double d;d=QString("1234.56e-02").toDouble(&ok); //ok=true;d=12.3456



4、 QString 转换为float 类型



QString str="123.45";float d=str.toFloat(); //d=123.45


QString str="R2D2";bool ok;float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;


5、 QString 与 char 互转


1 > char 转 QString


char a='b';QString str;str=QString(a);


2 > QString 转 char


QString str="qq";char *ch;ch = str.toLatin1.data();



6 、 const char * 转 char *



char *ch1="tt";const char *ch2="qq";ch1 = (char *)ch2;



7、 char * 与 QByteArray 互转


1 > QByteArray 转 char *


char *ch;QByteArray byte;ch = byte.data();


2 > char * 转 QByteArray


char *ch;QByteArray byte;byte = QByteArray(ch);



8、 QString 转换为char*


QString提供的字符编码集的转换函数将会返回一个constchar*类型版本的QByteArray,即构造函数QByteArray(constchar*)构造的QByteArray对象。QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes),也可以存储传统的以“\0”结尾的8位的字符串。在Qt中,使用QByteArray比使用const char*更方便,且QByteArray也支持隐式共享。转换函数有以下几种。


① toAscii():返回一个ASCII编码的8位字符串。
② toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串。
③ toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超级,它支持整个Unicode字符集)。
④ toLocal8Bit():返回一个系统本地(locale)编码的8位字符串。



QString qstr("hello,word");const char * p = qstr.toLocal8Bit().data();

const char *p2 = qstr.toStdString().data();

9、 QByteArray 与 QString 互转


1 > QByteArray 转 QString


QByteArray byte;QString string;string = QString(byte);

2 > QString 转 QByteArray


QByteArray byte;QString string;byte = string.toAscii();



10、当前时间转化为QString




QString b_dateTime;b_dateTime.append(tr("%1").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));


11、数值合并


QByteArray 中的两个字节合并成一个低八位一个高八位数据。


QByteArray handle_Data;// byte0为高8位// 取出对应位的16进制char型之后转换为16进制的int型(强制转换)int data1= (unsigned char)handle_Data.at(0);// byte1为低8位// 取出对应位的16进制char型之后转换为16进制的int型(强制转换)int data2= (unsigned char)handle_Data.at(1);int data_sum= data1<<8|data2;//移位8位是一个字节// 将16进制data_sum转换为string类型的10进制数便于在text上显示QString data_string= QString::number(data_sum,10);

1.QString转换String
string s = qstr.toStdString();
2.String转换QString
QString qstr2 = QString::fromStdString(s);

1. string str("hello world !");
2. const char * s = str.c_str();
3. QString qs1= "Hello , world !";
QByteArray ba = qs1.toLocal8Bit();
const char *s = ba.data();
const char *s2 = ba.constData();

QString qs1= "Hello , world !";
string str = qs1.toStdString();
const char *s= str.c_str();