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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с QModelIndex  (Прочитано 2710 раз)
virtual_root
Гость
« : Август 20, 2012, 16:53 »

Добрый вечер ребята. У меня следующий вопрос: Создаю дерево с любым уровнем вложенности. В каждый QStandartItem в data ложу id эелемента который отображаю. Проблема в следующем: обрабатываю событие клика по узлу дерева. Если я кликаю по верхнему уровню, то через QModelIndex могу получить QStandartItem и из него его данные. Если кликаю по внутреннему узлу, то он мне всё равно возвращает самый верхний родитель узла, а мне нужно у кликнутого узла получить id. Почему QModelIndex возвращает номера строк и столбцов(я через них получаю QStandartItem ) только верхнего уровня? Как мне добраться до внутренних узлов? Подскажите ребята!
Прилагаю код:
Код
C++ (Qt)
void Widget::on_treeView_clicked(const QModelIndex &index)
{
    qDebug()<<groups->GetGroupID(index);
}

Код
C++ (Qt)
int Groups::GetGroupID(QModelIndex index){
   QStandardItem *item = _model->item(index.row(),index.column());
   qDebug()<<index.row()<<index.column();
   return  item->data().toInt();
}
Записан
Странник
Гость
« Ответ #1 : Август 20, 2012, 23:17 »

parent не передаете, следовательно и получаете элемент верхнего уровня. надо так:
Код:
QStandardItem *item = _model->itemFromIndex(index);

а еще корректнее будет вот так:
Код:
int Groups::GetGroupID(const QModelIndex &index)
{
    return  index.data().toInt();
}
« Последнее редактирование: Август 20, 2012, 23:21 от Странник » Записан
trot
Гость
« Ответ #2 : Август 21, 2012, 07:43 »

Это вы думаете, что получает номер строки и столбца верхнего уровня. На самом деле вы получаете то что надо. В дереве нет сквозной нумерации, каждый уровень нумеруется с нуля, а чтобы понять какой уровень вы обрабатываете, то необходимо учитывать parent, то что вы не делаете.
Записан
virtual_root
Гость
« Ответ #3 : Август 21, 2012, 10:22 »

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


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