Russian Qt Forum
Ноябрь 22, 2024, 17:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
[РЕШЕНО] Большие модели
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [РЕШЕНО] Большие модели (Прочитано 15358 раз)
titan83
Гость
Re: Большие модели
«
Ответ #15 :
Октябрь 02, 2016, 17:35 »
Цитата: Bepec от Октябрь 02, 2016, 17:28
Отключите обновление таблицы на момент заполнения данными, время должно сократиться.
спасибо.
функция resetModel() в начале листинга содержит две строки:
beginResetModel();
endResetModel();
модель не обновляется.
пробовал ставить beginResetModel() в начале, а endResetModel() - в конце. Нет эффекта.
Записан
Bepec
Гость
Re: Большие модели
«
Ответ #16 :
Октябрь 02, 2016, 17:38 »
Не модели, а таблицы
Хотя мб и не поможет, я пока не видел какой тип View вы используете
Записан
titan83
Гость
Re: Большие модели
«
Ответ #17 :
Октябрь 02, 2016, 17:43 »
Цитата: Bepec от Октябрь 02, 2016, 17:38
Не модели, а таблицы
Хотя мб и не поможет, я пока не видел какой тип View вы используете
Я использую QTableView со своим делегатом, будьте добры, подскажите как можно "отключить обновление" именно в представлении? Я думал, что beginResetModel() и иже с ним, как раз и сообщают представлению, что с графическим обновление надо подождать.
Записан
titan83
Гость
Re: Большие модели
«
Ответ #18 :
Октябрь 02, 2016, 17:47 »
Цитата: Old от Октябрь 02, 2016, 17:31
А для чего это перекладывание?
Вы получаете QWshDatabase::SqlRecordsList data, вот и храните этот список, и данные берите от туда, когда вьюшка их будет спрашивать через data().
Что достигается этим копированием из data в _data?
В принципе, это разумно, но перед релизом я такой рефакторинг делать точно не буду))
К тому же данных должны быть немного распарсены перед использованием, ваш подход тоже разумен - парсить прямо перед отправкой во вью.
Я сейчас осмысливаю опыт с этого проекта, чтобы в следующем уже сделать все разумнее и проще.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Большие модели
«
Ответ #19 :
Октябрь 02, 2016, 18:17 »
Цитата: titan83 от Октябрь 02, 2016, 17:47
В принципе, это разумно, но перед релизом я такой рефакторинг делать точно не буду))
Вы серьезно?
Да что там рефакторить? Метод data модели?
Записан
Bepec
Гость
Re: Большие модели
«
Ответ #20 :
Октябрь 02, 2016, 18:19 »
ui.tableView->setUpdatesEnabled(bool )
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Большие модели
«
Ответ #21 :
Октябрь 02, 2016, 18:21 »
Цитата: Bepec от Октябрь 02, 2016, 18:19
ui.tableView->setUpdatesEnabled(bool )
Это ничего не даст.
Записан
titan83
Гость
Re: Большие модели
«
Ответ #22 :
Октябрь 02, 2016, 18:23 »
Цитата: Bepec от Октябрь 02, 2016, 18:19
ui.tableView->setUpdatesEnabled(bool )
Спасибо, посмотрел - это метод QWidget, не думаю, что это как-то поможет - основная работа идет с массивами данных, а не с виджетом.
Записан
titan83
Гость
Re: Большие модели
«
Ответ #23 :
Октябрь 02, 2016, 18:30 »
Цитата: Old от Октябрь 02, 2016, 18:17
Цитата: titan83 от Октябрь 02, 2016, 17:47
В принципе, это разумно, но перед релизом я такой рефакторинг делать точно не буду))
Вы серьезно?
Да что там рефакторить? Метод data модели?
Если я просто выводил один-в-один то, что пришло из БД во вью, то, конечно, я бы и не делал лишнюю прокладку. Но, к сожалению, я получаю описание ячейки (цвета фона-шрифта, состояние ячейки, поведение), мне надо его перевести в вид, удобный для как раз таки метода data() модели. Там около 350 строк кода в паре классов, и я не хотел бы переносить их в модель, т.к. не люблю классы-гиганты (>300-350 строк).
В любом случае - спасибо за участие.
Записан
titan83
Гость
Re: Большие модели
«
Ответ #24 :
Октябрь 02, 2016, 18:32 »
Коллеги, мы все же немного отвлеклись. Главный вопрос для меня - возможно ли ЧАСТИЧНО загружать данные в модель, именно те, которые требуются предсталению в данный момент?
Записан
Bepec
Гость
Re: Большие модели
«
Ответ #25 :
Октябрь 02, 2016, 18:50 »
Можно, если давать частичный запрос. По сути вы запрашиваете слишком много информации. Вам нужно запрашивать меньше.
PS вы немного не понимаете про виджет. При обновлении данных в View происходит следующее - каждая новая запись создаётся, отображается и только потом создаётся следующая. Убрав update виджета, мы убираем отображение из этой цепочки, что может сэкономить пусть и малую, но существенную часть.
PPS для Old и иных одаренных - да, при правильном создании модели данной ситуации не будет. Однако хз что там за модель и зачастую это может помочь
«
Последнее редактирование: Октябрь 02, 2016, 19:03 от Bepec
»
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Большие модели
«
Ответ #26 :
Октябрь 02, 2016, 19:05 »
Цитата: Bepec от Октябрь 02, 2016, 18:50
PS вы немного не понимаете про виджет. При обновлении данных в View происходит следующее - каждая новая запись создаётся, отображается и только потом создаётся следующая. Убрав update виджета, мы убираем отображение из этой цепочки, что может сэкономить пусть и малую, но существенную часть.
Это вы не понимаете. Все совсем не так. Если модель не уведомляет view о вставке/удалении строки, то ничего построчно не обновляется.
В данном случает, view обновится после отработки вышеприведенного кода - один раз. Правда не понятно, для чего вызывается resetModel до обвновления _data, а не после... но это частности.
Записан
Bepec
Гость
Re: Большие модели
«
Ответ #27 :
Октябрь 02, 2016, 19:09 »
Вы, как и я, в душе не чаете что там в модели. Так же как и нет уверенности в том, что приведенный код выдернут из проекта
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Большие модели
«
Ответ #28 :
Октябрь 02, 2016, 19:39 »
Цитата: Bepec от Октябрь 02, 2016, 19:09
Вы, как и я, в душе не чаете что там в модели.
Там "чаять" нечего.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Большие модели
«
Ответ #29 :
Октябрь 02, 2016, 19:42 »
Цитата: titan83 от Октябрь 02, 2016, 18:32
Коллеги, мы все же немного отвлеклись. Главный вопрос для меня - возможно ли ЧАСТИЧНО загружать данные в модель, именно те, которые требуются предсталению в данный момент?
Посмотрите, поддерживает ли MSSQL ключевые слова LIMIT и OFFSET, но лучше продумайте мощную систему фильтров, что-бы пользователю не приходилось ковыряться в 100500 строках не нужных ему данных.
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...