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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAbstractItemModel обновить данные в отображении  (Прочитано 12743 раз)
boobsik
Гость
« : Август 15, 2009, 19:06 »

унаследовал QAbstractItemModel.. я изменил данные в элементе, который соответствует ряду(row), как обновить данные в компоненте, который отображает данные? в данном случае компонент QTreeView.. (присоединил модель с помощью setModel(QAbstractItemModel* model))
Записан
Rcus
Гость
« Ответ #1 : Август 15, 2009, 19:10 »

А документацию по моделям уже читали? И пропустили описания сигналов? Советую вернуться и дочитать.
Записан
boobsik
Гость
« Ответ #2 : Август 15, 2009, 19:16 »

а разве отображение само не коннектит сигнал обновления? при установке новой модели?
« Последнее редактирование: Август 15, 2009, 19:23 от boobsik » Записан
Rcus
Гость
« Ответ #3 : Август 15, 2009, 19:24 »

/*sigh*/ Коннектит, но вы используете своего наследника QAbstractItemModel, а потому и вызов сигнала dataChanged нужно самому писать.
P.S. ушел.
Записан
boobsik
Гость
« Ответ #4 : Август 15, 2009, 19:28 »

dataChanged не виртуальный сигнал, смысл писать свой? сорри, понял) спасибо!)
« Последнее редактирование: Август 15, 2009, 19:35 от boobsik » Записан
f-r-o-s-t
Гость
« Ответ #5 : Август 15, 2009, 19:35 »

вызов сигнала dataChanged нужно самому писать.

dataChanged не виртуальный сигнал, смысл писать свой?

Писать и вызывать разные вещи. Попробуй emit dataChanged...
Записан
boobsik
Гость
« Ответ #6 : Август 15, 2009, 19:37 »

я могу сделать emit dataChanged(...) вне компонента?
Записан
f-r-o-s-t
Гость
« Ответ #7 : Август 15, 2009, 19:40 »

я могу сделать emit dataChanged(...) вне компонента?

Нет... а что компонента сама не знает что её меняют ?=)
Записан
boobsik
Гость
« Ответ #8 : Август 15, 2009, 20:36 »

ну допустим модель данных незнает) меняю только обьект отвечающий за ряд(row).. и как будет выглядеть фунция, которая эмитит dataChange внутри унаследованного от QAbstractItemModel класса? Нужна функция update, которая обновляет всю модель, но я не понимаю, какие QModelIndex надо в dataChange(...) засунуть?
создал метод в унаследованной модели данных
void MLDataModel::update(){
    emit dataChanged(index(0,0), index(2,1));
}
но после его выполнения добавленный третий ряд в QTreeView не отображается =(
Записан
BRE
Гость
« Ответ #9 : Август 15, 2009, 20:40 »

но после его выполнения добавленный третий ряд в QTreeView не отображается =(
А про эти сигналы QAbstarctItemModel читал?  Подмигивающий
void rowsAboutToBeInserted ( const QModelIndex & parent, int start, int end )
void rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end )
void rowsInserted ( const QModelIndex & parent, int start, int end )
void rowsRemoved ( const QModelIndex & parent, int start, int end )
Записан
f-r-o-s-t
Гость
« Ответ #10 : Август 15, 2009, 20:43 »

Всю модель может и reset обновить =)

А в dataChange(...) надо просто передать место изменения.

Простите, но я наверное лучше покину топик =)
Записан
boobsik
Гость
« Ответ #11 : Август 15, 2009, 20:46 »

алилуя!)) спасибо frost)
Записан
f-r-o-s-t
Гость
« Ответ #12 : Август 15, 2009, 20:52 »

алилуя!)) спасибо frost)

Я думал тебе надо только место изменения обновить.
На здоровье =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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