Qt中QString和int,char等相互轉換
網上找了半天,全是QString轉int和char等的,就沒有int轉QString的,但是還是找到啦,我來整合一下哦~
Qt中 int ,float ,double轉換為QString
有兩種方法
1.使用
QString::number();
如:
- long a = 63;
- QString s = QString::number(a, 10); // s == "63"
- QString t = QString::number(a, 16).toUpper(); // t == "3F"
2.使用
- long a = 63;
- QString s = QString("%1").arg(a);
把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.
把QString轉換為float形
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形轉換為整形
1.轉換為十進位制整形
注意:基數預設為10。當基數為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;
3.常整形轉換為Qstring形
- long a =63;
- QString str=QString::number(a,16); //str="3f";
- QString str=QString::number(a,16).toUpper(); //str="3F";
Qstring 轉換char*問題!
方法一:
- QString qstr("hello,word");
- constchar * p = qstr.toLocal8Bit().data();
方法二:
- constchar *p = qstr.toStdString().data();
轉換過來的是常量
把當前時間轉化為QString...
public QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
如果不是QTime和QDate類比如說:通過TCP/IP接收到的char unsigned char 類等如何轉換為QString類
QString Time2String( DWORD dwTime)
{
char cTime[50] = {0};
memset(cTime,0,50);
strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
return QString(cTime);
}
可能在傳遞引數的過程中, 傳的一是個bool值,而後面,在引數的轉換傳遞過程中,只能傳一個QString, 最後又需要得到一個bool值,這時就可以使用這種方法:
bool testParam;
QString tempParam = QString::number(testParam);
//上面是bool 轉QString;
QVariant tempValue = tempParam;
bool tempFinished = tempValue.toBool();
//這樣就把QString 型別的轉換回去了。