crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как "заморозить" QTableView, Запретить QTableView обращение к data( ... )
JohnZ
  опции профиля:
сообщение 16.10.2014, 19:21
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Вопрос в названии темы :)
Дело в том, что при вызове формы редактирования записи, вызванной из списка QTableView по "Enter",
происходит перерисовка QTableView есс-но с обращением к data( ... ) модели.
Как на время редактирования записи запретить QTableView перерисовываться, а если можно
запретить ему временно обращение к data( ... ) модели, было-бы вообще супер ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 16.10.2014, 22:51
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Нескромный вопрос, а зачем запрещать обращаться? Пусть перерисовывает, а когда закончите редактирование, обновите данные, не?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 17.10.2014, 11:28
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


lanz, ну почему-же нескромный ?! :)
Вот тут http://www.forum.crossplatform.ru/index.php?showtopic=10180 я положил реализацию модели.
columnCount() удалил, оказалась лишней. Взгляните на ф-цию data(). Вкратце суть такова, - есть в БД
таблица, допустим 20 полей, fld_1, fld_2 ... fld_20. В списке нужно показать допустим
3 поля, - fld_5 fld_3 fld_8 - _именно_ в таком порядке ! В форме редактирования, как Вы понинимаете,
должны быть все 20. Дык вотЪ, при такой реализации ф-ции data(), список показывает так как задумано,
(т.е. ремап колонок вручную :) ) но при вызове формы (по Enter), происходит перерисовка списка,
причём за вызванной формой, и перестраивание колонок списка в порядке fld_1, fld_2, fld_3 :(
т.к. флажок inList в этот момент выключен.
Получается, что вызванная форма (на модальном диалоге !) не перекрывает доступ списку к модели ?!
Как с этим бороться, пока не знаю :(
После закрытия формы редактирования, (флажок inList включен) список восстанавливается как было до вызова формы ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 17.10.2014, 22:32
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Сделайте две proxy-модели, по одной для каждой формы. А то так вы замучаетесь.
Либо пусть редактор оперирует на центральной модели.

А так вы тащите бизнес-логику в модель, что не есть правильно - получаются такие проблемы как у вас сейчас.
Пусть поток данных направляет ваш дизайн :lol:

Что то вроде того что в приложении.


Цитата(JohnZ @ 17.10.2014, 12:28) *
не перекрывает доступ списку к модели ?!

Нет, иначе как бы окно перерисовывалось, в модальном диалоге есть event loop, который качает события для этого треда.

Сообщение отредактировал lanz - 17.10.2014, 22:32
Прикрепленные файлы
Прикрепленный файл  scratch1.zip ( 3.85 килобайт ) Кол-во скачиваний: 100
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 16:16