QT 数据类型转换

  • std::string转换成QString
string std_str ("abc");
QString q_str = QString::fromStdString(std_str);
  • QString转换成std::string
QString q_str("abc");
string = q_str.toStdString();
  • string转换成char*
string std_str("abc");
char *str = std_str.c_str(std_str);
  • char* 转换成string
char c_str = "abcdefghijklmn";
string str = c_str;
  • QString转换成char*
QString  q_str;
char*  ch;
QByteArray ba = q_str.toLatin1();    
ch=ba.data();

当然,也可以通过std::string为桥梁

  • char* 转QString

可以通过std::string为桥梁
Qt中QString有如下构造函数
QString(const char * str) ,因此,可以直接将char*作为参数传入

  • int float转QString

变量a为int型或者float,double。10和16为进制,toUpper是大写

long a = 63; 
QString s = QString::number(a, 10); // s == "63" 
QString t = QString::number(a, 16).toUpper(); // t == "3F"
  • float,double转QString并控制输出精度
time_wov = ((double)m_Wdg_WOV)/27000000.0;
ui->edtTCWOV->setToolTip(QString::number(time_wov,10,3)+"sec"); //结果保留三位小数
  • QString转double
QString str="123.45"; 
double val=str.toDouble(); //val=123.45
  • QString转float
QString str="123.45"; 
float d=str.toFloat(); //d=123.45 
  • QString转int

If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.

If base is 0, the C language convention is used: If the string begins with “0x”, base 16 is used; if the string begins with “0”, base 8 is used; otherwise, base 10 is used.
int QString::toInt(bool * ok = 0, int base = 10) const

int QString::toInt(bool * ok = 0, int base = 10) const

example:

QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16); // hex == 255, ok == true
int dec = str.toInt(&ok, 10); // dec == 0, ok == false
  • QString::arg()格式化输出字符串

定义:QString QString::arg ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const

//example1
QString i = "iTest"; // current file's number 
QString total = "totalTest"; //number of files to process 
QString fileName = "fileNameTest"; //current file's name 
QString status = QString("Processing file %1 of %2: %3")\.arg(i).arg(total).arg(fileName); //status = Processing file iTest of TotalTest:fileNameTest
//example2:表示将addr和rtd_inl(addr)用8位16进制数表示,不足8位,高位补0.
QString("R)0x%1=0x%2").arg(addr,8,16,QChar('0')).arg((m_pio->_rtd_inl(addr)),8,16,QChar('0'));

猜你喜欢

转载自blog.csdn.net/weixin_42288671/article/details/81945994