Russian Qt Forum

Qt => Вопросы новичков => Тема начата: 4sgen от Июнь 15, 2020, 12:00



Название: TableView одна модель, два представления
Отправлено: 4sgen от Июнь 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 ?


Название: Re: TableView одна модель, два представления
Отправлено: demal от Июнь 15, 2020, 22:38
Можно


Название: Re: TableView одна модель, два представления
Отправлено: tamplier от Июнь 16, 2020, 03:44
Может поможет QAbstractProxyModel - https://doc.qt.io/qt-5/qabstractproxymodel.html (https://doc.qt.io/qt-5/qabstractproxymodel.html)


Название: Re: TableView одна модель, два представления
Отправлено: 4sgen от Июнь 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

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


Название: Re: TableView одна модель, два представления
Отправлено: 4sgen от Июнь 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);
индекс лишний