QT5对C++的一些基本封装(以迭代器为例)

Qstring类:qt提供的字符串类。

Qstring str=”hello,qt”;传递一个const char*类型的字符串给str,并调用构造函数。

Qstring::append():与+=相同功能,延长字符串‘

Qstring::sprintf():字符串初始化函数,如      str.sprintf(“%s”,”hello,qt”);

Qstring::arg():字符串组合函数,如     str=Qstring(“%1kill%2”).arg(“frank”).arg(“bob”);

其他的字符串组合函数:如insert(),prepend(),replace()

其他的字符串查找函数:如Qstring::startsWith()

字符串比较函数和字符串转换函数。

容器类(基于C++的模板类):

存储在容器类的数据必须是可赋值的数据类型,如int ,double,Qstring,QTime等,但QObject和它的子类是无法直接存储的,只能转化为指针

如QList<QWidget *> list;

容器类是可以嵌套的:

QHash<QString,QList<int> >,QHash的键类型(引用类型?)是QString,而值类型是QList<int>

QT的容器类为遍历其中的方法使用了以下两种方法:

Java风格的迭代器(Java-style iterators)

STL风格的迭代器(STL-style iterators)

常用的QT容器类有QList,QLinkedList,QVector等
迭代器从一个方面来讲可以理解为容器的指针。

迭代方法:

 

 
java迭代器风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <QDebug>

int main(int argc, char *argv[])
{

    QList<int> list;
    QMutableListIterator<int> i(list);
    for (int j=0;j<10;++j)
        i.insert(j);
    for (i.toFront();i.hasNext();   )
        qDebug << i.next();
    for (i.toBack();i.hasPrevious();)
    {
        if (i.previous()%2==0)
            i.remove();
        else
            i.setValue(i.peekNext() * 10);
    }
    for (i.toFront();i.hasNext();)
        qDebug() << i.next();
    system("pause");
    return 0;
}

c++迭代器风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <QDebug>
int main(int argc, char *argv[])
{
    QList<int> list;
    for (int i=0;i<10;i++)
        list.insert(list.end(), i);
    QList<int>::iterator j;
    for (j=list.begin();j!=list.end();j++)
        qDebug ()<< (*j);
        *j *=10;
    QList<int>::const_iterator cj;
    for (cj=list.constBegin();cj!=list.constEnd();cj++)
        qDebug ()<< *(cj);
    system("pause");
    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注