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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView и обновление данных  (Прочитано 5176 раз)
joffadark
Гость
« : Март 24, 2016, 15:43 »

Здравствуйте, уважаемые форумчане.

Реализовал наследника QAbstractTableModel, который подключается к QTableView, соответственно.
Наследник предоставляет данные в отображение напрямую из "физической" модели (ну, скажем, это вектор чисел).
 
Задача вот в чем : вектор этих данных может быть изменен вне модели (туда могут быть добавлены или удалены элементы). Но прямое изменение данных в векторе не проявляется в отображении. Соответственно, необходимо оповещать каким-то образом QTableView, что был изменен rowCount в модели )

Подскажите пожалуйста, как можно оповестить QTableView об изменении количества элементов в модели?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Март 24, 2016, 16:10 »

В модели посылать сигнал void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]
Записан

joffadark
Гость
« Ответ #2 : Март 24, 2016, 20:51 »

В модели посылать сигнал void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]

Спасибо за ответ! Попробую.
Хочу спросить : если использовать для отображения прокси-модель, а сигнал посылать из модели-источника этой прокси модели, сработает ли цепочка, обновится ли отображение?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Март 24, 2016, 21:32 »

В модели посылать сигнал void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) [signal]

Спасибо за ответ! Попробую.
Хочу спросить : если использовать для отображения прокси-модель, а сигнал посылать из модели-источника этой прокси модели, сработает ли цепочка, обновится ли отображение?

Думаю, да
Записан

joffadark
Гость
« Ответ #4 : Март 24, 2016, 23:25 »

emit dataChanged(...), к сожалению, не помог.

Добавление и удаление элементов из-вне завернул в отдельные публичные методы наследника модели.
В этих методах, изменение "физической" модели обернул в beginInsertRows / endInsertRows  и beginRemoveRows / endRemoveRows, соответственно.

Теперь отображение корректно обновляется.
Записан
Bepec
Гость
« Ответ #5 : Март 25, 2016, 00:07 »

Некорректно поставлен вопрос.
Изменение - dataChanged.
Добавление - beginInserted.
Удаление - beginRemove.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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