Russian Qt Forum
Ноябрь 25, 2024, 00:18
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Размещение множества сложных виджетов
Страниц: [
1
]
2
3
...
5
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Размещение множества сложных виджетов (Прочитано 22367 раз)
antipart
Гость
Размещение множества сложных виджетов
«
:
Январь 04, 2012, 21:10 »
Доброго времени суток!
Столкнулся с такой проблемой:
Есть большое количество(~1000) сложных кастомных виджетов(график дежурств)
- каждый включает в себя ~10 QLineEdit c QComplete + ~300 виджетов(по количеству дней в месяце для каждогоQLineEdit ) включающих в себя QCheckBox + 2QLabel + контекстное меню + всякие завязки SIGNAL/SLOT.
Вобщем проблема в том, что надо отображать не по одному, а все вместе, с прокруткой!
Пробовал:
1. QScrollArea - тормозит жутко, такое ощущение, что каждый раз (при переходе на вкладку с графиками) все перерисовывает.
2. QGraficsScene - отрисовывает нормально без тормозов, но здесь жесть при добавлении методом QGraficsScene::addWidget() (30 виджетов добавляются ~1min причем с постоянным замедлением) здесь скорость добавления очень зависит от сложности виджета.
3. QItemDelegate - через view->openPersistentEditor... тоже тормоза еще те (пробовал на 30 виджетах) при переходе на вкладку.
Подскажите реально ли это вообще сделать, может кто сталкивался? Куда копать?
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #1 :
Январь 05, 2012, 13:10 »
По описанию сложно все это представить.
Может своя модель, QTableView и собственный делегат будет лучше?
На форуме была подобная тема и кто-то писал, что добивался приемлемой производительности с большим количеством виджетов, но по-моему это изврат и надо что-то менять.
1000 виджетов - это плохое проектирование.
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #2 :
Январь 05, 2012, 13:23 »
Возможно, раз там что-то сложное рисуется нужно использовать кеширование, а не вычислять все каждый раз?
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #3 :
Январь 05, 2012, 13:40 »
Цитата: andrew.k от Январь 05, 2012, 13:10
но по-моему это изврат и надо что-то менять.
1000 виджетов - это плохое проектирование.
1. понятно что изврат, и это не мое проектирование, задача так стоит и не иначе... уже голову сломал
2. мне бы хоть 300 виджетов запустить таким образом
вот думаю.. может не использовать QScrollArea, а отнаследоваться от QAbstractScrollArea -> можно ли в этом случае
поменять тип отрисовки, чтобы при переходе на эту вкладку апдейтилась только видимая часть как в QGraphics?
Ведь реально видны только 1-2 виджета на экране, остальные по скроллу..
как бы совместить поведение QScrollArea и QGraphicsScene, чтобы виджеты добавлялись быстро и при отображении не тормозили.
еще думал в сторону QItemDelegate: в методе paint рисованием пытаться сдублировать весь этот большой гарфик дежурств
а потом на createEditor активировать сам виджет, но это геморрой еще тот... (тут же еще надо чтобы они совпадали)
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #4 :
Январь 05, 2012, 13:48 »
Задача стоит получить 1000 виджетов или получить некоторый внешний вид?
Думаю в QScrollArea все нормально сделано, только видимая и отрисовывается. Проблема очевидно в другом.
Думай еще в сторону делегата. И еще. И еще. И модели соответственно.
Выложи картинку того, что ты хочешь получить.
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #5 :
Январь 05, 2012, 14:04 »
Да задача стоит получить много активных виджетов (обычный большой график дежурств на 9-10 человек) с возможностью ставить
снимать дежурства менять людей из выпадающего списка, менять количество часов и тарифную ставку для каждого дежурства и
в зависимости от дня недели + различная доп. информация в виде пристыкованных таблиц и шапок слева и сверху.
+ кнопки "Применить", "Сгенерить", "Очистить"...
Т.е. виджет сам по себе очень громоздкий (тянет на полноценное диалоговое окно), а тут надо еще и все сразу на одной вкладке
QTabWidget, типа как в Exel
Записан
BRE
Гость
Re: Размещение множества сложных виджетов
«
Ответ #6 :
Январь 05, 2012, 14:04 »
Цитата: antipart от Январь 05, 2012, 13:40
1. понятно что изврат, и это не мое проектирование, задача так стоит и не иначе... уже голову сломал
Видать, те люди, которые должны будут работать с этой программой, очень сильно насолили этому проектировщику... Могут все таки у нас юзабилите продумать качественно...
Честно говоря лично таких экспериментов не проводил, но QScrollArea со своими наследниками + делегаты должны нормально справляться с отрисовкой всего этого. Все таки большие таблицы и списки отрисовываю нормально.
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #7 :
Январь 05, 2012, 14:15 »
Цитата: BRE от Январь 05, 2012, 14:04
Видать, те люди, которые должны будут работать с этой программой, очень сильно насолили этому проектировщику... Могут все таки у нас юзабилите продумать качественно...
да нет.. все проще проектировщик и пользователь - одно лицо
долго ему пытались объяснить что это через одно место...
Я так хочу и все... у него все эти графики в Экселе живут, теперь он решил это все оживить программно, но чтобы
непременно было как в Эксель - типа привык...
вот вырезал один
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #8 :
Январь 05, 2012, 14:20 »
Я почему-то вижу тут один виджет QTableView и никак не вижу 1000 виджетов! А вы?
Записан
mutineer
Гость
Re: Размещение множества сложных виджетов
«
Ответ #9 :
Январь 05, 2012, 14:22 »
Так а зачем обязательно
Цитировать
~300 виджетов(по количеству дней в месяце для каждогоQLineEdit )
? Почему надо сразу 300 активных виджетов, а не подставлять виджет в ячейку, на которую кликнули, а без клика просто текст показывать? Эксель же не держит на форме своей 500к лайнэдитов, а подставляет один в нужную ячейку;)
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #10 :
Январь 05, 2012, 14:25 »
Цитата: andrew.k от Январь 05, 2012, 14:20
Я почему-то вижу тут один виджет QTableView и никак не вижу 1000 виджетов! А вы?
так я один и вырезал и документа , таких таблиц на одной вкладке и должно быть много
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #11 :
Январь 05, 2012, 14:27 »
Цитата: antipart от Январь 05, 2012, 14:25
Цитата: andrew.k от Январь 05, 2012, 14:20
Я почему-то вижу тут один виджет QTableView и никак не вижу 1000 виджетов! А вы?
так я один и вырезал и документа , таких таблиц на одной вкладке и должно быть много
Вот это жесть!
Каким образом интересно? Монитор 100 дюймов?
Я просил скрин не документа, а того как это должно выглядеть в интерфейсе.
Записан
andrew.k
Гость
Re: Размещение множества сложных виджетов
«
Ответ #12 :
Январь 05, 2012, 14:33 »
А зачем кстати вкладки? Вкладки портят концепцию.
Их убрать и зах**ить 10000 виджетов на одну форму)
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #13 :
Январь 05, 2012, 14:38 »
Цитировать
Вот это жесть! Шокированный
Каким образом интересно? Монитор 100 дюймов?
да именно это слово
вот здесь и надо их скроллить...
Цитировать
Я просил скрин не документа, а того как это должно выглядеть в интерфейсе.
так и должно выглядеть в интерфейсе....
только почти все элементы таблицы активные...
т.е. где ФИО там лайЕдиты с Автокомплетами по всем дежурным в БД
там где собственно клеточки дежурств нужно назначать или снимать смены (через контекстное меню и QCheckBox)
менять часы и тарифы тоже для каждой клеточки дежурств и т.д.
Записан
antipart
Гость
Re: Размещение множества сложных виджетов
«
Ответ #14 :
Январь 05, 2012, 14:46 »
Цитата: andrew.k от Январь 05, 2012, 14:33
А зачем кстати вкладки? Вкладки портят концепцию.
Их убрать и зах**ить 10000 виджетов на одну форму)
На других вкладках другая информация не имеющая отношения к проблеме (например отчеты или редакция дежурных и т.д.)
Графики дежурств на одной вкладке, т. е. на одном виджете афигенного размера, который и надо скроллить
ну или как я уже писал есть варианты : на одной сцене , или в одной вьюхе у которых скролл встроенный
Так вот только в случае со сценой (при переходе на вкладку с графиками) нет тормозов все четко и быстро скроллится
а в других вариантах надо подождать несколько минут(30видж. ~2min) после клика на вкладке и собственно отображением содержимого вкладки
Записан
Страниц: [
1
]
2
3
...
5
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...