Russian Qt Forum
Ноябрь 01, 2024, 19:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QModelIndex()  (Прочитано 6910 раз)
Izi
Гость
« : Июль 18, 2015, 03:13 »

Доброго времени суток.
У меня есть вопрос. Для чего указывают QModelIndex() в аргументах функции??
К примеру:
Код
C++ (Qt)
QModelIndex index = pModel->index(2, 5, QModelIndex());
QVariant value = pModel->data(index);
 
В документации написано:
QModelIndex::QModelIndex ()
Creates a new empty model index. This type of model index is used to indicate that the position in the model is invalid.

Но зачем тогда передавать в функцию конструктор QModelIndex и создавать пустой индекс, если мы и так создаем индекс??
Код
C++ (Qt)
QModelIndex [b]index[/b] = pModel->index(2, 5, QModelIndex());

Спасибо.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Июль 18, 2015, 10:41 »

Это родитель.
Записан
Izi
Гость
« Ответ #2 : Июль 18, 2015, 13:58 »

Это родитель.

Спасибо. А зачем так сделано? Что-то логики не пойму. И зачем указывать родителя, если мы из конкретной модели и берем индексы row и column?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июль 18, 2015, 13:59 »

Затем, что модели бывают деревянные.
Записан
Izi
Гость
« Ответ #4 : Июль 18, 2015, 14:05 »

А, понял, QTree* ,а там зачем тогда указывать QModelIndex()?
« Последнее редактирование: Июль 18, 2015, 14:46 от Izi » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июль 18, 2015, 15:00 »

А, понял, QTree* ,а там зачем тогда указывать QModelIndex()?
Лучше сначала доку открыть, тогда и в "почемучку" играть не придется
Цитировать
QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex & parent = QModelIndex()) const
parent - прозрачный намек что возвращаемый индекс может быть дочерним в дереве. Также есть значение по умолчанию - тогда возвращается индекс верхнего уровня.
Записан
Izi
Гость
« Ответ #6 : Июль 18, 2015, 15:47 »

Спасибо за ответ!

Получается в этом случае вернется индекс верхнего уровня.
Код
C++ (Qt)
QModelIndex index = pModel->index(2, 5, QModelIndex());
QVariant value = pModel->data(index);

А в другом случае что туда писать? что-то понять никак не могу...
вот к примеру, есть модель:
Код
C++ (Qt)
   QList<int> list;
   list<<24<<11<<43;
 
   QVariant var=QVariant::fromValue(list);
 
   QStandardItemModel *model=new QStandardItemModel;
   for(size_t i(0);i<list.count();i++)
   {
       QStandardItem *itm=new QStandardItem;
       QVariant v=list.at(i);
       itm->setData(v.toInt(),Qt::DisplayRole);
       model->setItem(i,itm);
   }
   QModelIndex index=mod->index(0,0);
   qDebug()<<index.data();
 
И дебаг нормально отображает элемент.

А что тогда ещё можно туда передать в качестве parent? Кроме QModelIndex().
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #7 : Июль 18, 2015, 15:52 »

Почитайте наконец документацию: http://doc.qt.io/qt-4.8/model-view-programming.html
Там все с картинками на пальцах обьясняется.
Записан
Izi
Гость
« Ответ #8 : Июль 18, 2015, 16:02 »

Все, понял, спасибо! Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.357 секунд. Запросов: 23.