Итак класс 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 реально вставляет элемент, а если имеется с таким же индексом, то его смещаем вниз.