Qt中的对象类型转换

绝地灬酷狼 2022-08-18 12:17 276阅读 0赞

char * 与 const char *的转换

  1. char *ch1="hello11";
  2. const char *ch2="hello22";
  3. ch2 = ch1;//不报错,但有警告
  4. ch1 = (char *)ch2;

char 与 QString的转换

char 转换为 QString
其实方法有很多中,我用的是:

  1. char a='b';
  2. QString str;
  3. str=QString(a);

QString 转换为 char
方法也有很多种

  1. QString str="abc";
  2. char *ch;
  3. QByteArray ba = str.toLatin1()
  4. ch = ba.data();

注意:在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *ch = str.toLatin1().data();会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。

QByteArray 与 char* 的转换

QByteArray 转换为 char *

  1. char *ch;//不要定义成ch[n];
  2. QByteArray byte;
  3. ch = byte.data();

char * 转换为 QByteArray

  1. char *ch;
  2. QByteArray byte;
  3. byte = QByteArray(ch);

QString 与 QByteArray 的转换

QString转换为QByteArray

  1. QByteArray byte;
  2. QString string;
  3. byte = string.toAscii();

QByteArray 转换为 QString

  1. QByteArray byte;
  2. QString string;
  3. string = QString(byte);

这里再对这俩中类型的输出总结一下:

  1. qDebug()<<"print";
  2. qDebug()<<tr("print");
  3. qDebug()<<ch;(ch char类型)
  4. qDebug()<<tr(ch);
  5. qDebug()<<byteArray;(byteArrayQByteArray类型)
  6. qDebug()<<tr(byteArray);
  7. qDebug()<<str;(str Qstring类型)

但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:

  1. qDebug()<<tr(str.toLatin1);

int与 QString 的转换

int 转 QString

  1. int a=10;
  2. QString b;
  3. b=QString::number(a)

QString 转int

  1. QString a="120"
  2. int b;
  3. b=a.toInt()

QString与string的转换

QString –> string

  1. QString.toStdString();
  2. string --> QString
  3. QString::fromStdString(string)

QString与其他类型的转换

QString —>int,double,char *

  1. QString::toInt()
  2. QString::toDouble()
  3. QString.toStdString().c_str();

int double char* —>string
可以采用里的stringstream

以int 为例,

  1. int a = 3;
  2. stringstream ss;
  3. string strInt;
  4. ss<<a;
  5. ss>>strInt;

QString—>QDateTime
QDateTime转QString

  1. public QDateTime qdate = QDateTime.currentDateTime();
  2. datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
  3. //2012年03月-05日Monday13:48:55
  4. QString转换成QDateTime
  5. QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02","'M'M'd'd'y'yyhh:mm:ss");

QString –>Char*

Qstring 转换char*问题!
方法一:

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

方法二:

  1. const char *p = qstr.toStdString().data();
  2. //转换过来的是常量

方法三:

  1. QString str="abc";
  2. char *ch;
  3. QByteArray ba = str.toLatin1()
  4. ch = ba.data();

或者

  1. QString tmp = "test";
  2. QByteArray text = tmp.toLocal8Bit();
  3. char *data = new char[text.size() + 1]
  4. strcpy(data, text.data());
  5. delete [] data;

QDateTime 转换为 QString

  1. QString strBuffer;
  2. QDateTime time;
  3. time = QDateTime::currentDateTime();
  4. strBuffer = time.toString("yyyy-MM-dd hh:mm:ss");
  5. // strBuffer = 2015-12-21 17:35:00

String 转换为 QDateTime

  1. QString strBuffer;
  2. QDateTime time;
  3. strBuffer = "2010-07-02 17:35:00";
  4. time = QDateTime::fromString(strBuffer, "yyyy-MM-dd hh:mm:ss");

发表评论

表情:
评论列表 (有 0 条评论,276人围观)

还没有评论,来说两句吧...

相关阅读