QList

Итак класс QList - или простыми словами список чего-то, любых однотипных объектов. Значениями могут быть простые типы данных, классы , указатели на все что угодно,...

Управление списком по номеру (от 0 и до последнего), пропусков не допускается.

Основные функции управления содержанием списка это append, insert, removeAt, push_front, push_back. Ниже тестируем эти функции и замечаем некоторые нюансы:

class A
{
public:
    A() // default ctor
    {
        ii=111;
    }
    A(int ii_) // users ctor
    {
        ii=ii_;
    }

    int ii;
};

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


    QList< A > lst;

    lst.append(A());
    lst.append(A(222));
    lst.append(A(333));

    qDebug("---------------- append 3 pcs -------------------------");

    for(int ii=0; ii < lst.size(); ii  )
        qDebug("append[%i]=%i ",ii, lst[ii].ii);

    lst.insert(1, A(444));
    lst.insert(10, A(4440));

    qDebug("---------------- lst.insert(A(444)); -------------------------");
    qDebug("---------------- lst.insert(10, A(4440));---------------------");

    for(int ii=0; ii < lst.size(); ii  )
        qDebug("append[%i]=%i ",ii, lst[ii].ii);

    lst.push_back(A(555));

    qDebug("---------------- lst.push_back(A(555)); -------------------------");

    for(int ii=0; ii < lst.size(); ii  )
        qDebug("append[%i]=%i ",ii, lst[ii].ii);

    lst.push_front(A(666));

    qDebug("---------------- lst.push_front(A(666)); -------------------------");

    for(int ii=0; ii < lst.size(); ii  )
        qDebug("append[%i]=%i ",ii, lst[ii].ii);

    return a.exec();
}

Вывод в консоль получится такой:

---------------- append 3 pcs -------------------------
append[0]=111
append[1]=222
append[2]=333
---------------- lst.insert(A(444)); -------------------------
---------------- lst.insert(10, A(4440));---------------------
append[0]=111
append[1]=444
append[2]=222
append[3]=333
append[4]=4440 // insert( 10!?  
---------------- lst.push_back(A(555)); -------------------------
append[0]=111
append[1]=444
append[2]=222
append[3]=333
append[4]=4440
append[5]=555
---------------- lst.push_front(A(666)); -------------------------
append[0]=666
append[1]=111
append[2]=444
append[3]=222
append[4]=333
append[5]=4440
append[6]=555

insert в отличии от QMap и QHash реально вставляет элемент, а если имеется с таким же индексом, то его смещаем вниз.