QStandardItemModel сложность со столбцами..., Не могу правильно добавить столбцы... |
Здравствуйте, гость ( Вход | Регистрация )
QStandardItemModel сложность со столбцами..., Не могу правильно добавить столбцы... |
bahek3 |
31.3.2011, 16:50
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 2.12.2010 Пользователь №: 2237 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вопрос очень простой... но я все хожу вокруг да около и все никак не могу найти ответ... уже с этими индексами всю голову себе сломал... подскажите пжалста как быть... вопрос такой... Есть модель QStandardItemModel... из таблицы в БД я беру данные и строю из них дерево.. на это внимание не обращайте, это просто к сведению... Дело в том, что вложенность то будет наращиваться... и мне нужно чтобы первая колока была "data" а вторая "id"... в одну строку чтобы оно было.... ну блин уже пересмотрел примеров вагон и все никак не сложу из них одного нормального решения... подскажите кто...
QSqlQuery *pQuery = new QSqlQuery(QSqlDatabase::database("test")); pQuery->prepare("SELECT id, data FROM t_groups;"); pQuery->exec(); m_pModel = new QStandardItemModel(this); int i = 0; while(pQuery->next()){ QStandardItem *pItem = new QStandardItem(pQuery->value(1).toString()); m_pModel->appendRow(pItem); QStandardItem *pItem2 = new QStandardItem(pQuery->value(0).toString()); QList<QStandardItem*> lst; lst<<pItem2; m_pModel->insertColumn(1,lst); i++; } delete pQuery; на картинке виден результат выполнения этого обрыка кода... я понимаю что нужно перемещаться еще и по строкам... но все никак не попаду... |
|
|
abc |
31.3.2011, 19:52
Сообщение
#2
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
скомпилируй это - я так понял, что тебе такая штука нужна
может мой вариант плохой, я сам его изобрёл только что |
|
|
bahek3 |
1.4.2011, 8:28
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 2.12.2010 Пользователь №: 2237 Спасибо сказали: 0 раз(а) Репутация: 0 |
скомпилируй это - я так понял, что тебе такая штука нужна
может мой вариант плохой, я сам его изобрёл только что Спасибо! Вчера я всетки сочинил решение) и в этом варианте очень много близкого... если бы не сочинил сам, то он был бы очень полезен... Спасибо!! ) вот что насочинял... мот кому пригодится..
Но теперь встал другой вопрос)) Как получить значение этого id... ? Вот суть вопроса... я хочу сделать колонку id скрытой... и когда я нажимаю на какую-нить группу, узнать значение в ее второй колонке... ну тоесть ее id... и снова сочинял до не возможности... Раз уже открыл тему так может и этот вопрос рассмотрим тогда...?
Так получаю значения текущего выбранного элемента... в "index" когда деюбажиш видно что [0,0] - это выбраное значение (например "Группа 1"), а в [0,1] - значение id (получается 1).... Как мне это 1 достать??? Пробовал вроде так (может с ошибкой пишу как помню):
Получается снова не то все... в асистанте пересмотрел все методы класса QModelIndex, QStandardItemModel и QStandardItem.... мот что и пропустил... но много чего и перепробовал... думаю этот вариант близок к теме... но вот эта запись смущает item->row() при получении индекса.... |
|
|
bahek3 |
1.4.2011, 10:18
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 2.12.2010 Пользователь №: 2237 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Алексей1153 |
1.4.2011, 11:52
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
bahek3, а если бы уровней было этак с сотню - для каждого бы копипаст был ? В цикле ещё приемлимо. А лучше, ИМХО, - рекурсия. Вообще, дерево и рекурсия - родные брат и сестра )))
|
|
|
bahek3 |
1.4.2011, 14:41
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 2.12.2010 Пользователь №: 2237 Спасибо сказали: 0 раз(а) Репутация: 0 |
bahek3, а если бы уровней было этак с сотню - для каждого бы копипаст был ? В цикле ещё приемлимо. А лучше, ИМХО, - рекурсия. Вообще, дерево и рекурсия - родные брат и сестра ))) Я вкурсе что такие дела решаются рекурсией)) просто это как пробное решение... и не заморачивался на этом... Я хочу пока просто освоить эту тему... Мне бы лучше ответ на последний вопросец мой кто подсказал) а тогда уже и оптимизировать можно было бы)) |
|
|
abc |
1.4.2011, 20:05
Сообщение
#7
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
QStandardItem *item = m_pModel->itemFromIndex(index); QModelIndex idx = m_pModel->index(item->row(),1,item->index()); думаю, нужно убрать item->index() можно немножко иначе, и мне такой вариант больше нравится: если ты знаешь index итема: QModelIndex index1 = index.sibling(0,1) получили индекс соседа из колонки нумер 1 и дальше, как ты и сделал: m_pModel->data(index1).toString(); |
|
|
bahek3 |
3.4.2011, 14:58
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 2.12.2010 Пользователь №: 2237 Спасибо сказали: 0 раз(а) Репутация: 0 |
QModelIndex index1 = index.sibling(0,1) Интересная функция... нужно с ней познакомиться поближе... не знал ее назначения, но вижу полезная штука... Спасибо! Большое спасибо за участие и за дельные советы! Думаю дальше уже нахимичу) Маленькая поправочка... QModelIndex index1 = index.sibling(index.row(),1) И все работает как нужно... |
|
|
Текстовая версия | Сейчас: 29.11.2024, 14:55 |