Название: QAbstractTableModel - добавление итемов. Отправлено: QCasper от Март 20, 2007, 11:04 Я унаследовался от этого класса дабы создать свою модель. Помимо прочего у меня есть фукция добавления новых строк. Так как источником данных является QList<QStringList>, то в этой функции я просто добавляю в список еще один QStringList и вызываю reset(). Все отлично все добавляется, во вью все видно. Проблема вот в чем. У меня эта функция вызывается автоматически, в определенный момент времени (когда приходят новые данные). Допустим пользователь начал редактировать какой-то другой итем. Так вот если в этот момент вызвалась эта функция, то редактирование автоматически завершается и все, что там наредактировали пропадает. Я так подозреваю, что это происходит во время вызова reset(). Как сохранить режим редактирования?
Название: QAbstractTableModel - добавление итемов. Отправлено: evilguard от Март 20, 2007, 13:37 А ты как добавляешь данные в модель? beginInsertRows/endInsertRows вызываешь? Судя по всему нет, потому что reset используешь, а это неправильно.
Название: QAbstractTableModel - добавление итемов. Отправлено: QCasper от Март 20, 2007, 14:59 Цитата: "evilguard" А ты как добавляешь данные в модель? beginInsertRows/endInsertRows вызываешь? Судя по всему нет, потому что reset используешь, а это неправильно. Дело в том, что для вставки строки, я не переопределяю isnertRows(), а использую свой собственный метод, в котором я запихиваю данные в источник, коим как я уже писал является QList<QStringList>. И для того, чтобы обновить вью, я вызываю reset(). Я это, кстати, у Бланшета прочитал. Глава 10, Implementing Custom Models, отрывок: Код: void CurrencyModel::setCurrencyMap(const QMap<QString, double> &map) The caller can change the currency map using setCurrencyMap(). The QAbstractItemModel::reset() call tells any views that are using the model that all their data is invalid; this forces them to request fresh data for the items that are visible. |