Russian Qt Forum

Qt => Model-View (MV) => Тема начата: vdann от Июль 22, 2011, 10:12



Название: Как узнать какие данные изменены по сигналу dataChanged (...)?
Отправлено: vdann от Июль 22, 2011, 10:12
Всем доброго времени суток! У QAbstractItemModel есть сигнал dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ), который отправляется при любом изменении состояния модели, но мне необходимо знать какие данные были изменены (то есть какими они были до изменения и что в них изменилось). Может кто-нибудь знает какое-нибудь решение этой проблемы?


Название: Re: Как узнать какие данные изменены по сигналу dataChanged (...)?
Отправлено: twp от Июль 22, 2011, 19:56
самое простое что пришло в голову - это переопределить в модели метод QAbstractItemModel::setData() и в нем испускать свой сигнал


Название: Re: Как узнать какие данные изменены по сигналу dataChanged (...)?
Отправлено: vdann от Август 01, 2011, 12:49
Спасибо за совет, но это немного не то, модель передается снаружи, мне её никак не унаследовать...


Название: Re: Как узнать какие данные изменены по сигналу dataChanged (...)?
Отправлено: GreatSnake от Август 01, 2011, 12:57
Самый простой вариант - это после заливки данных в модель пробежаться по всем элементам и сделать для каждого элемента копию данных через setData(Qt::UserRole) и уже в слоте сравнивать data() c data(Qt::UserRole).