Russian Qt Forum

Qt => Model-View (MV) => Тема начата: iukash от Июнь 09, 2011, 23:20



Название: [РЕШЕНО] Перейти к следующему итему имея указатель на предведущий
Отправлено: iukash от Июнь 09, 2011, 23:20
В общем есть модель, добавляю строки  
Код:
QList <QStandardItem*> list;
list << item1 << item2 << item3;
appendRow(list);
В общем вопрос следующий, к примеру я получил указатель на итем item1, как перейти на item2? Пробую так
Код:
item2 = item1 + sizeof(QStandardItem);
но так не работает!


Название: Re: Перейти к следующему итему имея указатель на предведущий
Отправлено: kambala от Июнь 09, 2011, 23:37
Код
C++ (Qt)
item2 = model->item(item1->row(), item1->column() + 1);


Название: Re: Перейти к следующему итему имея указатель на предведущий
Отправлено: iukash от Июнь 10, 2011, 09:59
Код
C++ (Qt)
item2 = model->item(item1->row(), item1->column() + 1);
Спасибо огромное! А я начал раскуривать пользовательский итем, но там вылезли другие проблемы, а тут такое простое решение проблемы! Спасибо!


Название: Re: Перейти к следующему итему имея указатель на предведущий
Отправлено: iukash от Июнь 10, 2011, 10:45
Так рано порадовался, функция не учитывает что может быть row = 0, column = 0, и при этом это могут быть разные элементы, а он берет самый верхний parent.


Название: Re: Перейти к следующему итему имея указатель на предведущий
Отправлено: iukash от Июнь 10, 2011, 11:17
В общем немного допилил функцию item, выкладываю если кому понадобится.
Код:
QStandardItem *MyModel::itemMy(QStandardItem *parent,int row, int column) const
{
    if(parent->parent() != NULL)    {
        return parent->parent()->child(row, column);    }
    else    {
        return invisibleRootItem()->child(row, column);
    }
}