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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: TableView одна модель, два представления  (Прочитано 2816 раз)
4sgen
Новичок

Offline Offline

Сообщений: 27


Просмотр профиля
« : Июнь 15, 2020, 12:00 »

Здравствуйте всем!
Есть model0, которая отображается в TableView1.
Необходимо в другом TableView2 отобразить пересчитанные данные из model0.
например
model0  0 1 2 3 4 5 6 7 8
TableView1
0 1 2
3 4 5
6 7 8

TableView2 отображает сумму соседних ячеек
1   3
7   9
13 15


т.е. должны быть изменены
rowCount
columnCount
headerData
data
setData

Можно ли это реализовать в одной модели model0 ?
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #1 : Июнь 15, 2020, 22:38 »

Можно
Записан
tamplier
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #2 : Июнь 16, 2020, 03:44 »

Может поможет QAbstractProxyModel - https://doc.qt.io/qt-5/qabstractproxymodel.html
Записан
4sgen
Новичок

Offline Offline

Сообщений: 27


Просмотр профиля
« Ответ #3 : Июнь 16, 2020, 06:19 »

Создал proxy model. Не могу разобраться с индексом.
Как получить значение определенной ячейки?
делаю так в методе data:
Код:
if (role == Qt::DisplayRole) {
        QVariant unswer;
        QModelIndex mi;
        mi = sourceModel()->index(1, 1, proxyIndex);
        unswer = sourceModel()->data(mi, Qt::DisplayRole);
        return unswer;
}
ничего не отображает.
если использовать proxyIndex
Код:
unswer = sourceModel()->data(proxyIndex, Qt::DisplayRole);
то отображает с теми индексами, что и в sourcemodel

что-то с индексом не то..пока не разобрался
Записан
4sgen
Новичок

Offline Offline

Сообщений: 27


Просмотр профиля
« Ответ #4 : Июнь 16, 2020, 06:25 »

Создал proxy model. Не могу разобраться с индексом.
Как получить значение определенной ячейки?
делаю так в методе data:
Код:
if (role == Qt::DisplayRole) {
        QVariant unswer;
        QModelIndex mi;
        mi = sourceModel()->index(1, 1, proxyIndex);
        unswer = sourceModel()->data(mi, Qt::DisplayRole);
        return unswer;
}
ничего не отображает.
если использовать proxyIndex
Код:
unswer = sourceModel()->data(proxyIndex, Qt::DisplayRole);
то отображает с теми индексами, что и в sourcemodel

что-то с индексом не то..пока не разобрался


А разобрался.
Код:
mi = sourceModel()->index(1, 1);
индекс лишний
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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