QT系列第4节 QT包含模块以及常用的数据类型和容器

QT中包含很多模块,这些模块都是建立在常用数据类型和容器基础之上的。本篇简单介绍一下常用模块,常用数据类型,常用容器类。

目录

1.QT模块分类

2.QT基本数据类型

3.QString和QByteArray区别

4.QT中的容器


1.QT模块分类

(1)Qt模块主要分为以下

QT系列第4节 QT包含模块以及常用的数据类型和容器_第1张图片

 (2)Qt基本模块

QT系列第4节 QT包含模块以及常用的数据类型和容器_第2张图片

 QT系列第4节 QT包含模块以及常用的数据类型和容器_第3张图片

 (3)Qt附加模块

QT系列第4节 QT包含模块以及常用的数据类型和容器_第4张图片

 QT系列第4节 QT包含模块以及常用的数据类型和容器_第5张图片

(4)Qt增值模块

QT系列第4节 QT包含模块以及常用的数据类型和容器_第6张图片 

 (5)Qt技术预览模块

QT系列第4节 QT包含模块以及常用的数据类型和容器_第7张图片

 (6)Qt工具模块

QT系列第4节 QT包含模块以及常用的数据类型和容器_第8张图片

2.QT基本数据类型

QT系列第4节 QT包含模块以及常用的数据类型和容器_第9张图片QT系列第4节 QT包含模块以及常用的数据类型和容器_第10张图片

3.QString和QByteArray区别

(1)各种类型字符串

QT系列第4节 QT包含模块以及常用的数据类型和容器_第11张图片

(2)QByteArray与QString 

QByteArray 是 c 语言中 char* 的升级版本。

构造方法:

// 构造空对象, 里边没有数据
QByteArray::QByteArray();
// 将data中的size个字符进行构造, 得到一个字节数组对象
// 如果 size==-1 函数内部自动计算字符串长度, 计算方式为: strlen(data)
QByteArray::QByteArray(const char *data, int size = -1);
// 构造一个长度为size个字节, 并且每个字节值都为ch的字节数组
QByteArray::QByteArray(int size, char ch);

QString 也是封装了字符串,但是内部的编码为 utf8, UTF-8 属于 Unicode 字符集,它固定使用多个字节(window为2字节, linux为3字节)来表示一个字符。构造方法:

// 构造一个空字符串对象
QString::QString();
// 将 char* 字符串 转换为 QString 类型
QString::QString(const char *str);
// 将 QByteArray 转换为 QString 类型
QString::QString(const QByteArray &ba);

从QString构造函数可以看出QString是对QByteArray的封装。可以通过构造函数直接从QByteArray来构造QS同日那个

QString转QByteArray一般使用如下方法:

QByteArray QString::toUtf8() const;

(3)QString数值类型处理

    QString str = "101010";
    //以二进制字符串方式读入
    qDebug() << QString::number(str.toInt(nullptr, 2));
    str = "0FF";
    qDebug() << QString::number(str.toInt(nullptr, 16));

    //浮点数保留两位有效数字,三种写法均可以
    qDebug() << QString::number(123.234, 'f', 2);
    qDebug() << QString::asprintf("%.2f", 123.234);
    qDebug() << str.setNum(123.234, 'f', 2);

    //转为二进制字符串
    qDebug() << str.setNum(110, 2);
    //转为十六进制字符串
    qDebug() << str.setNum(110, 16);

运行结果:

QT系列第4节 QT包含模块以及常用的数据类型和容器_第12张图片

 

4.QT中的容器

4.1容器分类

QT系列第4节 QT包含模块以及常用的数据类型和容器_第13张图片

4.2 Java类型迭代器

QT系列第4节 QT包含模块以及常用的数据类型和容器_第14张图片

QT系列第4节 QT包含模块以及常用的数据类型和容器_第15张图片

 4.3 STL类型迭代器

QT系列第4节 QT包含模块以及常用的数据类型和容器_第16张图片

 

 代码举例:

    //顺序容器使用
    //遍历
    // 正向遍历
    QList strList;
    strList << "不知道" << "nihao" << "hello" << "abc" << "123";
    QListIterator i(strList);
    while (i.hasNext()) {
        qDebug() << i.next(); //返回数据,并跳过一项
    }

    // 反向遍历
    i.toBack();
    while (i.hasPrevious()) {
        qDebug() << i.previous();
    }

    // 修改
    QList iList;
    iList << 111 << 2 << 333 << 4 << 5;
    QMutableListIterator mi(iList);
    while (mi.hasNext()) {
        if (0 == mi.next() % 2) {
            mi.remove();
        }
    }
    mi.toFront();
    while (mi.hasNext()) {
        qDebug() << mi.next();
    }

    //关联容器使用
    QMap strMap;
    strMap.insert("Beijing", "China");
    strMap.insert("Paris", "France");
    strMap.insert("New York", "USA");
    strMap.insert("Mexico", "USA");
    strMap.insert("Moscow", "Russia");

    QMutableMapIterator mapI(strMap);
    while (mapI.hasNext()) {
        if (mapI.next()->endsWith("York")) {
            mapI.remove();
        }
    }

    mapI.toFront();
    while (mapI.hasNext()) {
        auto item = mapI.next();
        qDebug() << item.key() << " " << item.value();
    }

    strList.clear();
    strList << "A" << "B" << "C";
    QList::const_iterator ci;
    for(ci = strList.begin(); ci != strList.end(); ++ci) {
        qDebug() << *ci;
    }

    strMap.clear();
    strMap.insert("1", "111");
    strMap.insert("2", "222");
    strMap.insert("3", "333");
    strMap.insert("4", "444");
    QMap::iterator iit;
    for(iit = strMap.begin(); iit != strMap.end(); ++iit) {
        qDebug() << iit.key() << " " << iit.value();
    }//顺序容器使用
    //遍历
    // 正向遍历
    QList strList;
    strList << "不知道" << "nihao" << "hello" << "abc" << "123";
    QListIterator i(strList);
    while (i.hasNext()) {
        qDebug() << i.next(); //返回数据,并跳过一项
    }

    // 反向遍历
    i.toBack();
    while (i.hasPrevious()) {
        qDebug() << i.previous();
    }

    // 修改
    QList iList;
    iList << 111 << 2 << 333 << 4 << 5;
    QMutableListIterator mi(iList);
    while (mi.hasNext()) {
        if (0 == mi.next() % 2) {
            mi.remove();
        }
    }
    mi.toFront();
    while (mi.hasNext()) {
        qDebug() << mi.next();
    }

    //关联容器使用
    QMap strMap;
    strMap.insert("Beijing", "China");
    strMap.insert("Paris", "France");
    strMap.insert("New York", "USA");
    strMap.insert("Mexico", "USA");
    strMap.insert("Moscow", "Russia");

    QMutableMapIterator mapI(strMap);
    while (mapI.hasNext()) {
        if (mapI.next()->endsWith("York")) {
            mapI.remove();
        }
    }

    mapI.toFront();
    while (mapI.hasNext()) {
        auto item = mapI.next();
        qDebug() << item.key() << " " << item.value();
    }

    strList.clear();
    strList << "A" << "B" << "C";
    QList::const_iterator ci;
    for(ci = strList.begin(); ci != strList.end(); ++ci) {
        qDebug() << *ci;
    }

    strMap.clear();
    strMap.insert("1", "111");
    strMap.insert("2", "222");
    strMap.insert("3", "333");
    strMap.insert("4", "444");
    QMap::iterator iit;
    for(iit = strMap.begin(); iit != strMap.end(); ++iit) {
        qDebug() << iit.key() << " " << iit.value();
    }

运行效果:

QT系列第4节 QT包含模块以及常用的数据类型和容器_第17张图片

 

你可能感兴趣的:(QT,qt)