《完美Qt》之QString使用实例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lileiyu1/article/details/78347793
字符串连接

    QString("1")+QString("2");
    QString("1")+"3";
    QString("1")+QChar('A');
    QString("%1%2").arg("2","333");
    QString("%1%2").arg("aa").arg("bb");

    与C的sprintf一样
    QString("1").sprintf("%s","123    ");

    插入到指定索引
    QString("122").insert(1,"qqqqq");

    插入字符串到后面
    QString buff("1");
    (buff.push_back("aa"),buff);
    QString("1").append("aaaa");
    QString("1").append(QChar(')'));
    QString("1").append(QChar('q'));
    QString("1").append("aaaa");
    QString("1").append(QChar(')'));

    插入字符串到前面
    QString("1").prepend("    aaaa");
    (buff.push_front("bb"),buff);

查找字符串

    QString("abc")[1];
    QString("abc").at(2);
    QString("1234AAA611").indexOf("A");
    QString("1234AAA611").indexOf("A",6);
    QString("1234AAA611").indexOf("A",7);
    QString("1234AAA611").lastIndexOf("A");
    QString("1234AAA611").startsWith("123");
    QString("1234AAA611").endsWith("611");

替换字符串

    QString("aa").leftJustified(5,'.');
    QString("aaaa5555").replace('a',"&");
    QString("1234AAA611").replace("AAA","555");

截断字符串

    保留 前面 5个字符
    QString("1234AAA611").left(5);
    保留 后面 5个字符
    QString("1234AAA611").right(5);
    从索引 2 开始保留 3 个字符
    QString("1234AAA611").mid(2,3);
    删除字符串 "AAA"
    QString("1234AAA611").replace("AAA","");
    QString("1234AAA611").remove("AAA");
    QString("1234AAA611").remove(1,5);
    如果超过 3 个字符就保留 3 个字符,否则不足替换为 '.'
    QString("abc555d").leftJustified(3,'.',true);

    移除两端空白
    QString("  123  ").trimmed();
    把首尾空白全部清除,中间空白转义转换为一个空格
    QString("  12\t\r\n3  ").simplified();

转换大小

    转换为大写
    QString("abcd").toUpper();
    转换为小写
    QString("QA").toLower();

数字转换字符串

    QString::number(100);
    转换为 16 进制
    QString::number(123,16);
    转换为 16 进制,不足 8 位前面补 ‘0’
    QString("%1").arg(123,8,16,QLatin1Char('0'));
    转换为 8 进制
    QString("0%1").arg(QString::number(100,8));
    QString::number(.777);
    QString::number(.777,'f',1);
    QString::number(.0001,'f',2);
    QString::number(.0001,'g');
    QString::number(.00001,'g');
    QString::number(3.145);

字符串转换数字

    bool ok;
    QString("123").toInt();
    ok为转换是否成功
    QString("076").toInt(&ok,8);
    QString("AF").toInt(&ok,16);
    只有 3 为小数
    QString("123.233333").toFloat();
    QString("123.233333").toDouble();
    只有这种写法才能正确返回浮点数
    QString("123456e-9").toDouble();
    QString("1234.56e-5").toDouble();

分割字符串

    返回分割出来的索引为 2 的字符串
    QString("1,2,3,4").split(',')[2];
    返回从 2 开始 3 结束的分割的数组合成后的字符串
    QString("1,2,3,4,5").section(',',2,3);

字符串和枚举转换

    1508141603819346.png
    QMetaEnum metaEnum = QMetaEnum::fromType<Cenum::Priority>();
    返回枚举名字
    metaEnum.valueToKey(Cenum::VeryHigh);
    返回枚举值
    metaEnum.keysToValue("VeryHigh");

    必须使用 Q_ENUM 宏对枚举类型进行元类型注册
    该宏是5.5版本引入的,之前的版本不能使用

类型转换

    QString 转换 QByteArray
    QString("abc").toAscii();
    QString("abc").toLatin1();

    QByteArray 转换 QString
    QByteArray bytes;
    bytes.resize(2);
    bytes[0] = '1';
    bytes[1] = '2';
    QString str = bytes;

    QString 转换 char*
    (QString("abc").toLatinl()).data();
展开阅读全文

没有更多推荐了,返回首页