第2章:Qvactor

1,Qt容器的 相关使用:QList列表;QMap关联容器;QHash哈希容器等

2,源码:

    //QList<QToolBar> list;         这样定义编译会出错,因为这些类(QObject及其他的子类)没有复制构造函数和赋值操作运算符
    //QList<QToolBar *> list        只能这样定义
    //QHash<QString, QList<double>> 容器类可以嵌套

    QList<QString> list;
    list << "This is a test string\r\n";
    ui->textEdit->insertPlainText(list[0]);



    QList<int> list_num;             //容器
    list_num << 1 << 2 << 3 << 4 << 5;
    QListIterator<int> i(list_num);  //迭代器

    //QListIterator<T>::hasNext() 检查当前迭代器以后是否有列表项
    //QlistIterator<T>::next()函数进行遍历,next()函数将会跳过下一个列表项
    //QlistIterator<T>::toBack()将迭代点移动到最后一个列表项的后面
    //QListIterator<T>::hasPrevious():检查当前迭代点之前是否具有列表项
    //QListIterator<T>::previous();返回前一个列表项的内容并将迭代点移动到前一个列表项之前
    //QListIterator<T>::toFront():移动迭代点到列表的前端(第一个列表项的前面)
    //QListIterator<T>::peekNext():返回下一个列表项,但不移动迭代点
    //QListIterator<T>::peekPrevious():返回前一个列表项,但不移动迭代点
    //QListIterator<T>::findNext():查找迭代点,此时迭代点位于匹配列表项的后面
    //QListIterator<T>::findPrevious():查找迭代点,向前查找
    //QListIteraotr<T>::是只读迭代器,它不能完成列表项的插入和删除操作
    //QMutableListIterator<T>::读写迭代器,包含insert() remove()函数
    for (;i.hasNext();)
    {
        ui->textEdit->insertPlainText(QString("%1").arg(i.next(), 5, 10));
    }
    ui->textEdit->insertPlainText("\r\n");



    //读写迭代器
    QList<int> list_num2;
    QMutableListIterator<int> i2(list_num2);

    for (int j=0; j<10; j++)
    {
        i2.insert(j);
    }
    for (i2.toFront(); i2.hasNext();)
    {
        ui->textEdit->insertPlainText(QString("%1").arg(i2.next(), 5, 10));
    }
    ui->textEdit->insertPlainText("\r\n");

    for (i2.toBack(); i2.hasPrevious();)
    {
        if (i2.previous() % 2 == 0)
        {
            i2.remove();
        }
        else
        {
            i2.setValue(i2.peekNext()*10);
        }
    }

    for (i2.toFront(); i2.hasNext();)
    {
        ui->textEdit->insertPlainText(QString("%1").arg(i2.next(), 5, 10));
    }
    ui->textEdit->insertPlainText("\r\n");



    //STL标准风格的迭代器,
    QList <int> List_Num3;
    for (int j=0; j<10; j++)
    {
        List_Num3.insert(List_Num3.end(), j);
    }

    QList<int>::iterator i3;
    for (i3=List_Num3.begin(); i3!= List_Num3.end(); ++i3)
    {
        ui->textEdit->insertPlainText(QString("%1").arg((*i3)*100, 5, 10));
    }
    ui->textEdit->insertPlainText("\r\n");

    QList<int>::const_iterator i4;
    for (i4=List_Num3.constBegin(); i4 !=List_Num3.constEnd(); ++i4)
    {
        ui->textEdit->insertPlainText(QString("%1").arg((*i4)*1000, 5, 10));
    }
    ui->textEdit->insertPlainText("\r\n");


    //QMap<Key, T>, QMultiMap<Key, T>;  QMapIterator<Key, T>:只读迭代器;  QMutableMapIterator<Key, T>:读写迭代器
    //QHash<Key, T>,QMultiHash<Key, T>; QHashIterator<Key, T>:只读迭代器; QMutableHashIterator<Key, T>:读写迭代器
    QMap <QString, QString> map;

    map.insert("beijing", "111");
    map.insert("shanghai", "021");
    map.insert("nanjing", "025");


    QMutableMapIterator<QString, QString> mim(map);
    if (mim.findNext("111"))
    {
        mim.setValue("010");
    }

    //只读迭代器要在此处声明
    QMapIterator<QString, QString> im(map);
    for (;im.hasNext();)
    {
        ui->textEdit->insertPlainText(im.key() + " " + im.next().value());
        ui->textEdit->insertPlainText("   ");
    }
    ui->textEdit->insertPlainText("\r\n");


    //STL 标准风格操作
    QMap<QString, QString> map2;

    map2.insert("beijing", "111");
    map2.insert("shanghai", "021");
    map2.insert("jinan", "0531");

    QMap<QString, QString>::iterator mim2;
    mim2 = map2.find("beijing");
    if (mim2 != map2.end())
    {
        mim2.value() = "010";
    }

    QMap<QString, QString>::const_iterator im2;
    for(im2=map2.constBegin(); im2 != map2.constEnd(); ++im2)
    {
        ui->textEdit->insertPlainText(im2.key() + " " + im2.value());
        ui->textEdit->insertPlainText("   ");
    }
    ui->textEdit->insertPlainText("\r\n");

3,效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ksmtnsv37297/article/details/86510719
今日推荐