QString 、QByteArray、 QVariant 的用法

QString 、QByteArray、 QVariant 的用法

QString
  • 隐式共享,写时复制
  • 深复制 复制一个对象 浅复制 复制一个引用 (指向共享数据块的指针)
Qt 的隐式共享类 Implicit Sharing
QByteArray  
QCursor
QFont
QPixmap
QString
QUrl
QVariant
所以有容器类
qDebug()<<"编辑字符串操作:";
QString str = "hell0";
qDebug()<<"size:"<<str.size();
str[0]=QChar('H');
qDebug()<<str;
str.append(" Qt");
str.replace(1,4,'i');
str.insert(2,"my");
qDebug()<<str;
str = str + "!!!";
qDebug()<<str;
str = str + "hi\r\nQt! \n";
qDebug()<<str;
//去掉字符串两端的空白字符或其他字符 \r \n \t \v \f
QString str1 = str.trimmed();
qDebug()<<"trimmed:"<<str1;
//去掉字符串两端和中间的多余空白字符串 中间的替换为空格
QString str2 = str.simplified();
qDebug()<<"simplified:"<<str2;
str = "hi,my,,Qt";
//QString::SkipEmptyParts  跳过空白条目
QStringList list = str.split(",",QString::SkipEmptyParts);
qDebug()<<"拆分后:"<<list;
//用空格组合各个字符串
str = list.join(" ");
qDebug()<<"组合后:"<<str;
qDebug()<<QString().isNull();           //true
qDebug()<<QString().isEmpty();          //true
qDebug()<<QString("").isNull();         //false
qDebug()<<QString("").isEmpty();        //true    isEmpty更为保险些

qDebug()<<"字符查询提去";
str = "yefeilinux";
qDebug()<<str;
qDebug()<<"右5:"<<str.right(5);
qDebug()<<"左5:"<<str.left(5);
qDebug()<<"2,3:"<<str.mid(2,3);
qDebug()<<"fei:"<<str.indexOf("fei");
qDebug()<<"0:"<<str.at(0);
qDebug()<<"i Count:"<<str.count("i");
qDebug()<<"ye 开始?"<<str.startsWith("ye");
qDebug()<<"linux 结束?"<<str.endsWith("linux");
qDebug()<<"包含 ”lin“ ?"<<str.contains("lin");
QString temp = "hello";
if(temp>str) qDebug()<<temp;
else qDebug()<<str;
qDebug()<<"字符串转换操作:";
str = "100";
qDebug()<<"转换为整数:"<<str.toInt();
int num = 45;
qDebug()<<"转换为字符串:"<<QString::number(45);
str = "FE";
bool ok;
int hex = str.toInt(&ok,16);
qDebug()<<"ok:"<<ok<<"转换为十六进制:"<<hex;
num = 128;
qDebug()<<"转换为16进制字符串"<<QString::number(num,16);
str = "666.999";
qDebug()<<"转换为浮点数"<<str.toFloat();
str = "bcd";
qDebug()<<"转换大写:"<<str.toUpper();
str = "BCD";
qDebug()<<"转换小写:"<<str.toLower();
int age =28;
QString name = "xiaoming";
str  = QString("name is %1 ,age is %2").arg(name).arg(age);
qDebug()<<str;
str = " %1 %2";
qDebug()<<str.arg("%1f","hello");
qDebug()<<str.arg("%1f").arg("hello");
//这里可以设置  arg 的第一个参数的宽度小于  第二个参数的值(正填充左边 负填充右边)    用第3个参数填充
str = QString("hi %1").arg("Qt",-6,' ');
qDebug()<<"字宽为6,用“*”填充"<<str;
qreal value = 66.89666;
str = QString("number:%1").arg(value,0,'f',2);
qDebug()<<"小数点后两位数:"<<str;
//去掉了QString输出字符串的引号
qDebug()<<"str转换为 const chart*:"<<qPrintable(str);

QByteArray QVariant
  • QBytrArray 字节数组 存储原始字节(包括 “\0”)和传统以 “\0” 结尾的8位字符串 隐式共享 用法和QString相似 除arg()以外
  • QVariant 常见Qt数据类型的一个共用同(union) 一个对象同一时间只能保存一个单一类型的单一值 可以使用 toT() (T为一种数据类型) 进行转换(转换时是深复制) canConvert() 和 convert() 返回的结果可嫩不一样 实际转换情况要看 convert()
//QVariant
QVariant v1(15);
qDebug()<<v1.toInt();
QVariant v2(12.3);
qDebug()<<v2.toFloat();
QVariant v3("Hi Qt");
qDebug()<<v3.toString();
QString stri1="AC123";
QVariant v5=stri1;
//判断是否可以转换为Int
qDebug()<<v5.canConvert(QVariant::Int);
qDebug()<<v5.toString();
//转换类型为Int 转换成功为true   否则为false  并清空该对象
qDebug()<<v5.convert(QVariant::Int);
qDebug()<<v5.toString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值