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;
QString str1 = str.trimmed();
qDebug()<<"trimmed:"<<str1;
QString str2 = str.simplified();
qDebug()<<"simplified:"<<str2;
str = "hi,my,,Qt";
QStringList list = str.split(",",QString::SkipEmptyParts);
qDebug()<<"拆分后:"<<list;
str = list.join(" ");
qDebug()<<"组合后:"<<str;
qDebug()<<QString().isNull();
qDebug()<<QString().isEmpty();
qDebug()<<QString("").isNull();
qDebug()<<QString("").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");
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;
qDebug()<<"str转换为 const chart*:"<<qPrintable(str);
QByteArray QVariant
- QBytrArray 字节数组 存储原始字节(包括 “\0”)和传统以 “\0” 结尾的8位字符串 隐式共享 用法和QString相似 除arg()以外
- QVariant 常见Qt数据类型的一个共用同(union) 一个对象同一时间只能保存一个单一类型的单一值 可以使用 toT() (T为一种数据类型) 进行转换(转换时是深复制) canConvert() 和 convert() 返回的结果可嫩不一样 实际转换情况要看 convert()
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;
qDebug()<<v5.canConvert(QVariant::Int);
qDebug()<<v5.toString();
qDebug()<<v5.convert(QVariant::Int);
qDebug()<<v5.toString();