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());
}