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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAbstractTableModel - добавление итемов.  (Прочитано 3050 раз)
QCasper
Гость
« : Март 20, 2007, 11:04 »

Я унаследовался от этого класса дабы создать свою модель. Помимо прочего у меня есть фукция добавления новых строк. Так как источником данных является QList<QStringList>, то в этой функции я просто добавляю в список еще один QStringList и вызываю reset(). Все отлично все добавляется, во вью все видно. Проблема вот в чем. У меня эта функция вызывается автоматически, в определенный момент времени (когда приходят новые данные). Допустим пользователь начал редактировать какой-то другой итем. Так вот если в этот момент вызвалась эта функция, то редактирование автоматически завершается и все, что там наредактировали пропадает. Я так подозреваю, что это происходит во время вызова reset(). Как сохранить режим редактирования?
Записан
evilguard
Гость
« Ответ #1 : Март 20, 2007, 13:37 »

А ты как добавляешь данные в модель? beginInsertRows/endInsertRows вызываешь? Судя по всему нет, потому что reset используешь, а это неправильно.
Записан
QCasper
Гость
« Ответ #2 : Март 20, 2007, 14:59 »

Цитата: "evilguard"
А ты как добавляешь данные в модель? beginInsertRows/endInsertRows вызываешь? Судя по всему нет, потому что reset используешь, а это неправильно.


Дело в том, что для вставки строки, я не переопределяю isnertRows(), а использую свой собственный метод, в котором я запихиваю данные в источник, коим как я уже писал является QList<QStringList>. И для того, чтобы обновить вью, я вызываю reset(). Я это, кстати, у Бланшета прочитал. Глава 10, Implementing Custom Models, отрывок:

Код:
void CurrencyModel::setCurrencyMap(const QMap<QString, double> &map)
{
    currencyMap = map;
    reset();
}



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.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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