Qt数据类型转换大全

参考:http://blog.csdn.net/ei__nino/article/details/7297791

Qt中数据类型的转换很常用,于是边使用边记录,有不完整的,后边再慢慢补充完善

Qt中 int ,long转换为QString

有两种方法
1、使用QString::number(),如:

long a = 63;  
QString s = QString::number(a, 10);             // s == "63"  
QString t = QString::number(a, 16).toUpper();     // t == "3F"  
(解释,变量a为int型或者float,double。10和16为进制) toUpper是大写
2、使用格式化,如:

long a = 63;  
QString s = QString("%1").arg(a); 

第一种方法更常用些

float,double转换为QString

double c = float(a) / float(b) ;
QString d = QString::number(c,10,4);

其中第三个参数表示精度

把QString转换为 double类型
方法1:

QString str="123.45";  
double val=str.toDouble(); //val=123.45  
方法2:

bool ok;  
double d;  
d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  
方法2很适合科学计数法形式转换

把QString转换为float型

和double类似,有两种方法

方法1:

QString str="123.45";  
float d=str.toFloat(); //d=123.45  
方法2:

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

把QString型转换为整型

转换为十进制整型,注意:基数默认为10,并且基数必须在2到36之间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

Qstring str="FF";  
bool ok;  
int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
int hex =str.toInt(&ok,16); //hex=255;ok=true; 
把QString转换为char*型

方法一:

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

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

把QString与string相互转换

//从QString 到 std::string
str = qstr.toStdString();
//从std::string 到QString
qstr = QString::fromStdString(str);

把QString转换为QByteArray型

QString str("hello");  
QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1 

QString str("hello");  
QByteArray bytes = str.toLatin1();  // QString转QByteArray方法2
把QByteArray转换为QString型
    QByteArray bytes("hello world");
    QString string = bytes;   // QByteArray转QString方法1

    QByteArray bytes("hello world");
    QString string;
    string.prepend(bytes);// QByteArray转QString方法2

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页