學習和使用Qt也有差不多半年了,想着半年前一個剛看完《C++ Primer》的超級大菜鳥,到現在能夠基本獨立完成實驗室上位機軟件開發的小菜鳥,Qt的學習讓我加深了對《C++ Primer》的理解,更培養了我查文檔的能力。這半年來,學到了很多,卻由於沒有及時記錄忘了很多。對着之前的項目,把經驗留在這,亡羊補牢。
關於Qt5的學習,突然發現了一篇非常好的教程,非常詳細,感謝作者。
Qt的數據類型與標准c++是不一樣的,在開發的時候,必然會涉及到很多數據類型的轉換。早已厭倦了百度QString轉QByteArray,QByteArray轉char*,QString轉string......。Qt的第一篇文章,就先來總結一下我用過的數據之間的轉換。
1、QString轉QByteArray
QByteArray byte;
QString string;
byte = string.toLatin1();
2、QByteArray轉QString
QByteArray byte;
QString string;
string = QString(byte);
3、QString轉String
QString string;
std::string str;
str = string.toStdString();
4、String轉QString
QString string;
std::string str;
string = QString::fromStdString(str);
5、QByteArray轉char *
char *ch; //不能定義成ch[n],數組和指針不一樣;
QByteArray byte;
ch = byte.data();
6、char *轉QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
7、QString轉char *
QString string;
char *ch;
ch = string.toLatin1.data();
8、char *轉QString
char *ch;
QString string= QString(QLatin1String(ch));
9、QHostAddress轉QString
QHostAddress address;
QString string = address.toString();
10、QString轉QHostAddress
QString string;
QHostAddress address(string);
11、QString轉unsigned char
QString string;
bool ok;
unsigned char uch = string.toInt(&ok, 16);
12、unsigned char轉QString
unsigned char uch;
QString string = QString::number(uch,16);
13、int轉QString
int m;
QString string;
string=QString::number(m);
14、QString轉int
QString string;
int m;
m=string.toInt();
11和12主要用在串口通信中,把收到的數據轉成QString后用於顯示。
其實,number這個函數不僅僅能夠轉換成int型,還能轉換成double,long等等,還可以16進制轉換,非常強大。
以上是我經常碰到的,其實用好幫助文檔也是一樣,只是有個歸納的找起來方便而已。