Russian Qt Forum
Ноябрь 01, 2024, 12:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Как отключить обновление вида QTableView?
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как отключить обновление вида QTableView? (Прочитано 12969 раз)
OS2
Самовар
Offline
Сообщений: 186
Как отключить обновление вида QTableView?
«
:
Февраль 16, 2016, 00:58 »
Всем доброго времени суток.
Подскажите, как отключить обновление вида, унаследованного от QTableView, у которого установлена табличная модель, унаследованная от QAbstractTableModel?
ЗЫ: тоесть необходимо, чтобы содержимое вида не обновлялось, а модель продолжала получать новые данные и обновлять другие виды?
Заранее спасибо за ответ!
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #1 :
Февраль 16, 2016, 08:21 »
setUpdatesEnabled устраивает?
Записан
OS2
Самовар
Offline
Сообщений: 186
Re: Как отключить обновление вида QTableView?
«
Ответ #2 :
Февраль 16, 2016, 09:50 »
К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #3 :
Февраль 16, 2016, 10:09 »
Цитата: OS2 от Февраль 16, 2016, 09:50
К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Вчера отвечал
Цитата: Igors от Февраль 15, 2016, 17:38
Почему бы не сделать "обертку" для контейнера? Рабочая нитка не удаляет, а увеличивает счетчик удаленных (или хранит индексы удаленных если можно удалять в любом порядке). Добавлять добавляет но rowCount возвращает старое значение. Разумеется все это тоже защищено локами. В итоге обе нитки работают с 1 контейнером, но модель какое-то время показывает его старую копию. Потом (хоть по таймеру) главная нитка посылает самой себе сигнал по которому (опять-таки под защитой лока) делается removeRows, удаленные реально удаляются, и insertRows. Все совершенно легально, и (на первый взгляд) несложно
Записан
OS2
Самовар
Offline
Сообщений: 186
Re: Как отключить обновление вида QTableView?
«
Ответ #4 :
Февраль 16, 2016, 10:17 »
Ясно. Значит простого способа не существует...а жаль.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #5 :
Февраль 16, 2016, 10:29 »
Цитата: OS2 от Февраль 16, 2016, 10:17
Ясно. Значит простого способа не существует...а жаль.
Попривыкали сладко кушать готовые классы
Записан
Bepec
Гость
Re: Как отключить обновление вида QTableView?
«
Ответ #6 :
Февраль 16, 2016, 11:14 »
Таки интересная задача. В принципе можно написать модельку, которая будет хранить несколько наборов данных и в зависимости от View, которая запрашивает данные отдавать каждой view свой набор.
Но это задача не дня, тут только тестировать придётся недельку на мой взгляд.
Записан
VPS
Гость
Re: Как отключить обновление вида QTableView?
«
Ответ #7 :
Февраль 16, 2016, 11:46 »
Цитата: OS2 от Февраль 16, 2016, 09:50
К сожалению setUpdatesEnabled не подходит. Он полностью блокирует работу с видом, а я хотел, чтобы с видом можно было продолжать работать, но новые данные в него, из модели, не приходили...
Может тогда создать временную модель - копию существующей?
Только есть вопрос: насколько большая оригинальная модель и как поступать с обновлёнными данными во временной модели?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как отключить обновление вида QTableView?
«
Ответ #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
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #9 :
Февраль 16, 2016, 12:11 »
Цитата: Racheengel от Февраль 16, 2016, 11:47
А что, сделать модель-копию и подключить ее ко вью уже не круто в 21 веке?
Это было всегда плохо еще в 20-м
Записан
OS2
Самовар
Offline
Сообщений: 186
Re: Как отключить обновление вида QTableView?
«
Ответ #10 :
Февраль 16, 2016, 12:47 »
Да, копии моделей делать не комильфо. Я думал есть более простой и элегантный способ решения моей проблемки... .
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как отключить обновление вида QTableView?
«
Ответ #11 :
Февраль 16, 2016, 18:16 »
Цитата: OS2 от Февраль 16, 2016, 12:47
Да, копии моделей делать не комильфо. Я думал есть более простой и элегантный способ решения моей проблемки... .
Но у Вас же "сделать копию" предопределено самим условием:
Цитата: OS2 от Февраль 16, 2016, 12:47
тоесть необходимо, чтобы содержимое вида не обновлялось, а модель продолжала получать новые данные и обновлять другие виды?
То есть имеется модель, которая обновляется И к ней привязане ДРУГИЕ виды.
Ваш ВИД и, соответственно, ЕГО МОДЕЛЬ - это всего лишь "замороженная" копия оригинала.
Что не так с копированием?
Записан
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
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #12 :
Февраль 17, 2016, 05:02 »
Цитата: Racheengel от Февраль 16, 2016, 18:16
То есть имеется модель, которая обновляется И к ней привязане ДРУГИЕ виды.
Ваш ВИД и, соответственно, ЕГО МОДЕЛЬ - это всего лишь "замороженная" копия оригинала.
Что не так с копированием?
То что данные "в 2 экземплярах", и их сбивка/синхронизация станет источником постоянных забот.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как отключить обновление вида QTableView?
«
Ответ #13 :
Февраль 17, 2016, 11:29 »
Цитата: Igors от Февраль 17, 2016, 05:02
То что данные "в 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
Сообщений: 11445
Re: Как отключить обновление вида QTableView?
«
Ответ #14 :
Февраль 17, 2016, 15:44 »
Цитата: Racheengel от Февраль 17, 2016, 11:29
С каких делов то? Человек знает, когда ему получить копию данных и отобразить их. Залочил основную модель - сделал копию - разлочил - вывел в гуй. Где здесь могуть быть проблемы?
А не надо искать "где" - они сами Вас найдут, и гораздо быстрее чем ожидалось. И в конце-концов, почесав репу, придется согласиться с тем что "прынцыпы" лучше не нарушать
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...