QT中的类型转换

1、int类型转换成QString类型

(1)比如要将int 类型的数据转换成QString类型展示在桌面上

代码:

    int a = 32;
    QString strTemp = QString::number(a,10);//QString QString::number(int n, int base = 10)

(2)QString转int,可以直接调用QString的转化函数

    QString b = "32";
    int a = b.toInt(nullptr,10);

2、指定位数输出

(1)int类型数据转换QString类型按指定位数输出显示

这里我一般用QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
例如:int类型10,转换为QString类型,保留2为16进制数,位数不够补零

  int a = 10;
  QString strTemp = QString("%1").arg(a,2,16,QLatin1Char('0'));//strTemp = "0A"

(2)float类型转换成QString,按指定位数输出

  float f = 10.23456;
  QString strTemp = QString::number(f,'f',2);//f保留两位小数,strTemp = 10.23

3、其他类型转换

(1)char 与 QString的转换

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

(2)QString 转换为 char

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

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

(3)QByteArray 与 char* 的转换

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

(4)QString 与 QByteArray 的转换

  1. QString转换为QByteArray
  QByteArray byte;
  QString string;
  byte = string.toAscii();
  1. QByteArray 转换为 QString
  QByteArray byte;
  QString string;
  string = QString(byte);

(5)QString与string的转换

  1. QString --> string
    QString.toStdString();

  2. string --> QString
    QString::fromStdString(string)

(6)QString与int,double,char *的转换

  1. QString --->int,double,char *
    QString::toInt()
    QString::toDouble()
    QString.toStdString().c_str();

(7)QDateTime转QString

QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss"); //2021年10月18日Monday13:48:55

参考:https://blog.csdn.net/emdfans/article/details/26071291

posted @ 2021-10-18 11:35  Bruce的笔记本  阅读(1070)  评论(0)    收藏  举报