QT 常见类型转换

1.QString 转换为 const char *

    QString command = "ewhales_rtc -s ";
    std::string str = command.toStdString();
    const char* ch = str.c_str();

2.QString 转换为 char *

  将 QString 转 char *,需要用到 QByteArray 类,因为 char * 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'。

方法如下:

QString str;
char* ch;
QByteArray ba = str.toLatin1(); // must
ch=ba.data();

3.const char * 转换为 QString

  将 char * 转换为 QString,使用 QString 的构造函数进行转换:QString(const QLatin1String &str);

  QLatin1String 的构造函数:QLatin1String(const char *str);

  因此用下面这个语句就可以将 char * ch 转换为 QString str 了,如下:

str = QString(QLatin1String(ch));

4.char * 转换为QString:

string转换为QString:fromstdString

char * 转换为string

char *cStr = "C++";
std::string Str = std::string(cStr);

4.double 转QString 小数点问题

double data =  40.215586810458;
QString str = QString::number(data,'f',10);  // f 表示非科学记数法  10表示小数点后保留10位

5.QString 转 double  小数点问题

#include <QTextStream>

QString num("12.3456789");
double d = num.toDouble();
qDebug()<<fixed<<qSetRealNumberPrecision(7)<<d; // fixed 表示非科学记数法,7表示小数点位数

6.QString和int转化:

QString 转换为int:

Qstring str="FF";  
bool ok;  
int dec=str.toInt(&ok,10); //dec=255 ; ok=true  
int hex =str.toInt(&ok,16); //hex=255;ok=true;  

int转换为QString:

long a =63;  
QString str=QString::number(a,16); //str="3f";  
QString str=QString::number(a,16).toUpper(); //str="3F";

7.QString16进制转换为十进制:

QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16);

8.QString 转换为枚举变量:

https://blog.csdn.net/precious_li/article/details/74978527

qDebug()<<"---------------";
const QMetaObject metaObject = IPWM::staticMetaObject;
int enumIndex = metaObject.indexOfEnumerator("PWMChipName");
if(enumIndex == -1) {
    qDebug()<< "";
}
QMetaEnum en = metaObject.enumerator(enumIndex);
QString str ="pwmchip0";
QByteArray ba = str.toLatin1(); // must
qDebug()<<en.keyToValue(ba.data());
QString SerialPortInteractive::enumToStr(int pinYinID,QString enumValue)
{
    const QMetaObject metaObject = SerialPortInteractive::staticMetaObject;
    int enumIndex = metaObject.indexOfEnumerator(enumValue.toStdString().c_str());
    QMetaEnum en = metaObject.enumerator(enumIndex);
    return  QString(en.valueToKey(pinYinID));
}
int SerialPortInteractive::strToEnum(QString str,QString enumValue)
{
    const QMetaObject metaObject = SerialPortInteractive::staticMetaObject;
    int enumIndex = metaObject.indexOfEnumerator(enumValue.toStdString().c_str());
    QMetaEnum en = metaObject.enumerator(enumIndex);
    return  en.keysToValue(str.toStdString().c_str());
}

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值