Qt种的数据类型转换(一)

  • int 转 Qstring:

有两种方法适用于不同的场景:

 - QString::number
int a = 63; QString str1 = QString::number(a, 10);  // str1 = "63",十进制形式 QString str2 = QString::number(a, 16);  // str2 = "3F",十六进制形式
 -  QString::arg
int b = 0; QString str3 = QString("b : 1%. we need 2% rows more").arg(b).arg(iSample);
  • QString的字符拼接

Qt中的字符串类 QString类 保存了16位Unicode值,提供了丰富的操作、查询和转换等函数。
QString 字符串有如下几个操作符:
(1) “+” 用于组合两个字符串,“+=” 用于将一个字符串追加到另一个字符串的末尾,例如:

 QString str1 = "Welcome";  str1 = str1 + "to you !"; 
//str1 = "Welcome to you!"  QString str2 = "Hello,";  str2 += "World!"; 
//str2 = "Hello,World!" 

(2)QString::append()函数,具有与“+=”操作符同样的功能,实现字符串末尾追加另一个字符串, 例如:

 QString str1 = "Welcome ";
 QString str2 = "to "; 
 str1.append(str2);  
 //str1 = "Welcome to "  str1.append("you !");        
 //str1 = "Welcome to you !" 

(3)组合字符串的另一个函数是QString::sprintf(),此函数支持的格式定义和C++库中的函数sprintf()定义一样,例如:

 QString str;  str.sprintf("%s","Welcome ");     //str = "Welcome "  
 str.sprintf("%s"," to you! ");      //str = " to you! "
 str.sprintf("%s %s","Welcome "," to you! ");     //str = "Welcome  to you! "; 

(4)Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载可以处理很多的数据类型。此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点精度进行控制。相对于QString::sprintf(),QString::arg()是一个比较好的解决方案,因为它类型安全,完全支持Unicode,并且允许改变“/n”参数的顺序。例如:

 QString str; 
 str = QString("%1 was born in %2.").arg("Joy").arg(1993);     
 //str =  "Joy was born in 1993."; 

其中:
  “%1” 被替换为“Joy”.   “%2"被替换为“1993”.
  
(5)QString 也提供了一些其他的组合字符串的方法,包括以下几种:
  a. insert()函数:在原字符串特定位置插入另一个字符
  b. prepend()函数:在原字符串开头插入另一个字符串
  c. replace()函数:用指定的字符串去代替原字符串中的某些字符
  
(6)去除字符串两端的空白(空白字符包括回车符号“\n”、换行符“\r”、制表符”\t"和空格字符:“ ”等)非常常用,如获取用户输入账号时就需要去掉空白符。
  a. QString::trimmed()函数:移除字符串两端的空白符
  b. QString::simplified()函数:移除字符串两端的空白字符,使用单个空格字符“ ”代替字符串中出现的空白字符。
例如:

QString str1 = "   Welcome  \t  to  \n  you!   ";  
QString str2 = "   Welcome  \t  to  \n  you!   ";  
str1 = str1.trimmed();      // str1 = " Welcome \t to \n you! "  
str2 = str2.simplified();     // str2 = " Welcome to you ! " 
  • QString转换String
//1.QString转换String
string s = qstr.toStdString();
//2.String转换QString
QString qstr2 = QString::fromStdString(s);
  • QString与char *

QString转换到char*
1.最简单直观的方法是:

QString from; 
char * ch_str; 
ch_str = from.toLocal8Bit().constData();

2.通过QByteArray中转一下:

QString str1 = "Test"; 
QByteArray ba = str1.toLatin1(); 
const char *c_str2 = ba.data();

char*转化为QString
通过std::string中转一下:

unsigned char* ch; 
std::string str = std::string((char*)ch); 
QString sstr = QString::fromStdString(str);
  • Opecv的Mat Img转换成 QImage类型
cv.cvtColor(cvImg, cvImg, CV_BGR2RGB); 
QImage qimg = QImage((const unsigned char*)(cvImg.data), cvImg.cols,                 cvImg.rows, cvImg.cols * cvImg.channels(),                  QImage::Format_RGB888);
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值