Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Январь 26, 2022, 09:11



Название: "Тяжелое" окно
Отправлено: Igors от Январь 26, 2022, 09:11
Добрый день

Юзеру предъявляется список объектов. По hotkey или из меню открывается окно с параметрами выбранного объекта (назовем info window). Таких окон несколько для одного объекта. При выборе др объекта info window(s) автоматом переключается на выбранный. В общем, обычный browsing (если я верно употребляю это слово). Многие приложения показывают список и info(s) в одном окне, что имеет свои плюсы и минусы

И вот проблема - одно из info окон оказывается слишком тяжелым, грузит много данных и переключаться на него при смене выбора занимает неск секунд и больше. Недолго думая я сделал его модальным. Увы, быстро выяснилось что это не годится, нужен постоянный доступ к др окнам которые отображают сцену

Какие есть решения ?

Спасибо


Название: Re: "Тяжелое" окно
Отправлено: Racheengel от Апрель 30, 2022, 10:06
Наверное проблема уже решилась..
Но наверное кэшировать данные?


Название: Re: "Тяжелое" окно
Отправлено: Igors от Май 01, 2022, 05:50
Но наверное кэшировать данные?
Ну "что/как кешировать" - глухая конкретика задачи, обсуждать нет смысла. Возможно (обдумываю) сформулировать так: поймать момент когда данные "тяжелого окна" стали невалидны (типа dirty = true). Это тоже головняк, но допустим, и дальше что? Как организовать разумное поведение для юзера? Можно помечтать о "перезагрузке данных в др нитке"  :)
Наверное проблема уже решилась..
Нет, актуально


Название: Re: "Тяжелое" окно
Отправлено: DarkHobbit от Май 19, 2022, 14:53
Можно помечтать о "перезагрузке данных в др нитке"  :)

Я думаю, что это не "помечтать", а в итоге самый толковый способ.

Только в GUI thread, думаю, надо хранить статус "загружено - загружается - не загружено". Чудес-то не бывает. Если юзер захочет быстро попереключаться туда-сюда, надо во время загрузки показывать что-то типа "данные загружаются", а если эти данные могут измениться прямо во время работы - возможно, и добавить в инфо-окно кнопку "Обновить", которая снова дёрнет на запуск нитку загрузки. Просто при переключении между окон нитку не дёргать, пусть программа показывает ранее загруженные данные. Иначе вся эта многопоточность быстро доведёт программу до цунгундера. Для особо бестолковых любознательных можно при последующих переключениях подсвечивать рядом с кнопкой "Обновить" надпись что-нибудь типа "Данные могут быть неактуальными", если речь действительно идёт не про файлы, а про данные реального времени...