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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как отключить обновление вида QTableView?  (Прочитано 13043 раз)
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« : Февраль 16, 2016, 00:58 »

Всем доброго времени суток.

Подскажите, как отключить обновление вида, унаследованного от QTableView, у которого установлена табличная модель, унаследованная от QAbstractTableModel?
ЗЫ: тоесть необходимо, чтобы содержимое вида не обновлялось, а модель продолжала получать новые данные и обновлять другие виды?  Непонимающий

Заранее спасибо за ответ!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Февраль 16, 2016, 08:21 »

setUpdatesEnabled устраивает?
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #2 : Февраль 16, 2016, 09:50 »

К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Февраль 16, 2016, 10:09 »

К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Вчера отвечал  Улыбающийся
Почему бы не сделать "обертку" для контейнера?  Рабочая нитка не удаляет, а увеличивает счетчик удаленных (или хранит индексы удаленных если можно удалять в любом порядке). Добавлять добавляет но rowCount возвращает старое значение. Разумеется все это тоже защищено локами. В итоге обе нитки работают с 1 контейнером, но модель какое-то время показывает его старую копию. Потом (хоть по таймеру) главная нитка посылает самой себе сигнал по которому (опять-таки под защитой лока) делается removeRows, удаленные реально удаляются, и insertRows. Все совершенно легально, и (на первый взгляд) несложно
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #4 : Февраль 16, 2016, 10:17 »

Ясно. Значит простого способа не существует...а жаль.  Грустный
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 16, 2016, 10:29 »

Ясно. Значит простого способа не существует...а жаль.  Грустный
Попривыкали сладко кушать готовые классы  Улыбающийся
Записан
Bepec
Гость
« Ответ #6 : Февраль 16, 2016, 11:14 »

Таки интересная задача. В принципе можно написать модельку, которая будет хранить несколько наборов данных и в зависимости от View, которая запрашивает данные отдавать каждой view свой набор.

Но это задача не дня, тут только тестировать придётся недельку на мой взгляд.
Записан
VPS
Гость
« Ответ #7 : Февраль 16, 2016, 11:46 »

К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Может тогда создать временную модель - копию существующей?
Только есть вопрос: насколько большая оригинальная модель и как поступать с обновлёнными данными во временной модели?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #8 : Февраль 16, 2016, 11:47 »

А что, сделать модель-копию и подключить ее ко вью уже не круто в 21 веке?

UP: vps, вы меня опередили Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Февраль 16, 2016, 12:11 »

А что, сделать модель-копию и подключить ее ко вью уже не круто в 21 веке?
Это было всегда плохо еще в 20-м  Улыбающийся
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #10 : Февраль 16, 2016, 12:47 »

Да, копии моделей делать не комильфо. Я думал есть более простой и элегантный способ решения моей проблемки... .  Подмигивающий
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Февраль 16, 2016, 18:16 »

Да, копии моделей делать не комильфо. Я думал есть более простой и элегантный способ решения моей проблемки... .  Подмигивающий

Но у Вас же "сделать копию" предопределено самим условием:

тоесть необходимо, чтобы содержимое вида не обновлялось, а модель продолжала получать новые данные и обновлять другие виды?

То есть имеется модель, которая обновляется И к ней привязане ДРУГИЕ виды.
Ваш ВИД и, соответственно, ЕГО МОДЕЛЬ - это всего лишь "замороженная" копия оригинала.
Что не так с копированием?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Февраль 17, 2016, 05:02 »

То есть имеется модель, которая обновляется И к ней привязане ДРУГИЕ виды.
Ваш ВИД и, соответственно, ЕГО МОДЕЛЬ - это всего лишь "замороженная" копия оригинала.
Что не так с копированием?
То что данные "в 2 экземплярах", и их сбивка/синхронизация станет источником постоянных забот.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #13 : Февраль 17, 2016, 11:29 »

То что данные "в 2 экземплярах", и их сбивка/синхронизация станет источником постоянных забот.

С каких делов то? Человек знает, когда ему получить копию данных и отобразить их. Залочил основную модель - сделал копию - разлочил - вывел в гуй. Где здесь могуть быть проблемы?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Февраль 17, 2016, 15:44 »

С каких делов то? Человек знает, когда ему получить копию данных и отобразить их. Залочил основную модель - сделал копию - разлочил - вывел в гуй. Где здесь могуть быть проблемы?
А не надо искать "где" - они сами Вас найдут, и гораздо быстрее чем ожидалось. И в конце-концов, почесав репу, придется согласиться с тем что "прынцыпы" лучше не нарушать
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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