Названия столбцов |
Здравствуйте, гость ( Вход | Регистрация )
Названия столбцов |
Анна |
14.7.2011, 15:17
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
[root]
| L[item 1] | L[item][item][item] | L[item][item][item] | L[item 2] | L[item][item][item][item][item] | L[item][item][item][item][item] | L[item][item][item][item][item] Имеется вот такое дерево. Дети item1 представляют собой таблицу с одними данными. Дети item2 - другую таблицу. Отобразить их в разных вьюверах не проблема. Проблема в том, что заголовки столбцов в обоих вьюверах выходят одинаковыми, т. к. задаются одной моделью. Кроме того дети из нулевых колонок отображаются в дереве, что не желательно (хотя это легко решается, если подтаблицу начинать не с 0 , а с 1 колонки ).Подскажите, как обойти. Пока что в голову пришло завести model1 и model2 и хранить указатели на них в [item1] и [item2] соответственно и подсовывать тогда можно будет в один и тот же вьювер... Сообщение отредактировал Анна - 14.7.2011, 15:30 |
|
|
Litkevich Yuriy |
14.7.2011, 18:55
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
конечную цель не понял, если можно, то лучше картинку.
|
|
|
novichkov |
14.7.2011, 19:51
Сообщение
#3
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
А может, для каждой таблицы сделать делегата, в котором отображать QTableView/QTableWidget?
|
|
|
Анна |
15.7.2011, 9:52
Сообщение
#4
|
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Вот картинка. Все элементы принадлежат одной модели QStandardItemModel. В tablwView1 отображаются дети root1, а в tableView2 - дети root2. У всех трёх вьюверов одинаковые названия колонок, потому что они задаются в модели. И это сильно портит мне жизнь. Кстати, обратите внимание, что в правых вьюверах пронумерована только одна строка. Это потому, что в модель добавлен только один элемент (0,0), а все остальные его дети. Всё это нужно для того, чтобы имея только один tableView подсовывать ему подтаблички из одного дерева (root1 или root2) в зависимости, куда ткнули мышкой в дереве; Пока что придумалось только такое: Раскрывающийся текст
Всё, что пришло в голову на данный момент это перегрузить у QAbstractProxyModel (реально, проще оказалось у QSortFilterProxyModel) функции setHeaderData() и headerData(), и подкладывать модель табличному вьюверу через прокси. Сообщение отредактировал Анна - 19.7.2011, 14:33 |
|
|
||
PAFOS |
5.8.2011, 14:12
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Очень интересно реализована такая схема в MS Access (только там видел, но наверняка есть еще где-то)
Суть в том, что при тычке на root, его ячейка расширяется и туда пихается таблица содержащая его детей (только один уровень) Далее при тычке на ячейке в дочерней табличке, ячейка расширяется и туда пихается еще одна таблица и т.д. Можно вместо таблиц пихать, например, QTreeView. В целом novichkov прав - для нужно делать делегат, только не для каждой таблицы а один для всех. P.S. может это на первый взгляд покажется сложно в реализации, но на самом деле все гораздо проще, чем кажется . P.S.S. можете считать меня извращенцем, но испытал большое наслаждение когда реализовал это! Сообщение отредактировал PAFOS - 5.8.2011, 14:13 |
|
|
Текстовая версия | Сейчас: 6.1.2025, 19:22 |