Здравствуйте, SaZ, Вы писали:
SaZ>Делайте свой делегат, переопределив один метод:
SaZ>http://doc.qt.io/qt-5/qitemdelegate.html#setModelData
SaZ>SaZ>void MyItemDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const
SaZ>{
SaZ> emit MyMegaSignal( index );
SaZ> return QItemDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index);
SaZ>}
SaZ>
SaZ>З.Ы. IgoreАвтор: Igore
Дата: 01.02.16
более общий случай написал. Мой пример подходит именно для тех случаев, когда нужно кидать сигнал только при пользовательском вводе. Если данные менять программно, то у меня сигнал не кинется.
Некропостинг, да

Но по теме. Сейчас разбираюсь с этой ша(р)манкой. И у меня вопрос. Что вы подразумеваете под программным изменением данных?
В моей программе данные это список, элементами которого являются структуры. tableView отображает через модель эти данные в виде таблицы, каждая строка — элемент списка. И реализован делегат, как вы рекомендовали.
Если я чисто программно добавляю элемент к списку между вызовами beginReset() endReset() для модели, то изменение данных в отображении происходит корректно, но ни setModelData() в делегате, ни setData() в модели не вызываются.
А если редактирую вручную данные в tableView, то вызываются и setModelData() в делегате, и setData() в модели.
Т.е. у меня получается, что и ваш вариант, и вариант
IgoreАвтор: Igore
Дата: 01.02.16
равносильны? (при условии, что имеем одно окошко tableView, один экземпляр делегата и один экземпляр модели)