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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsScene: Как сделать более кошерно...  (Прочитано 3674 раз)
Figaro
Гость
« : Март 12, 2011, 04:35 »

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

Не могу решить как реализовать:
Есть общая сцена, вью и etc. Юзера там извращаются над графическими примитивами. Нужно сделать историю в виде списка изображений последних изменений (ограничение - не более 60 снапшотов), что то вроде коммита, когда юзер захочет. Окно истории должно поверх основной сцены. Сумбурно немного. У меня есть такие варианты:
1. Сделать отдельное окно на основе обычного виджета и парентом его установить основное для приложения. Соответственно своя сцена, вью.
2. Реализовать еще один вид QGraphicsItem'ов и установить ему максимальный z-order.
3. Тож самое как и в п.2, но извратиться группой айтемов.
4. Использовать наследника QGraphicsWindow.


Хм.. остановился сначала на п.4. но смутил пост на форуме нокии одного уважаемого пиндоса, типа: "QGraphicsScene.addWidget скоро отомрет, оставлен ток для совместимости".. Так вот.

и P.S. Не хочется быть велосипедо строителем, но есть ли готовые решения?
Записан
_OLEGator_
Гость
« Ответ #1 : Март 13, 2011, 21:21 »

Я бы сделал обычным списком (QListView), а его хоть поверх сцены разместить можно, хоть в саму сцену вставить
Записан
Sancho_s_rancho
Гость
« Ответ #2 : Март 13, 2011, 21:41 »

Виджет пихать в сцену не очень хорошо в плане производительности. Т.е. на данный момент (к примеру) вам надо только информацию вывести, а потом вы захотите его еще и двигать или менять размер и тут будет засада. Да и виджет этот несколько инородно для сцены в плане внешнего вида.
Вариант с QGraphicsItem-ми отрисовываться будет гораздо быстрее.
Создаете прямоугольник QGraphicsItem с ZValue=1.0 и в нем размещаете все, что надо.
Пост Скриптум: однако к словам этого пиндоса я отношусь скептически. Просто это не эффективно.
Записан
_OLEGator_
Гость
« Ответ #3 : Март 13, 2011, 21:46 »

Самому изобретать свой вьювер... В данном случае имеет смысл прикрутить стандартный механизм Undo/Redo.
Про производительность думаю не критично, если вообще будет заметно и почему для сцены виджеты инородны? они по факту просто картинки для сцены, а все события перетранслируются через QGraphicsProxyWidget...
Записан
Sancho_s_rancho
Гость
« Ответ #4 : Март 13, 2011, 21:58 »

Самому изобретать свой вьювер... В данном случае имеет смысл прикрутить стандартный механизм Undo/Redo.
Про производительность думаю не критично, если вообще будет заметно и почему для сцены виджеты инородны? они по факту просто картинки для сцены, а все события перетранслируются через QGraphicsProxyWidget...
Про производительность: автору видней развитие программы. Мое дело предупредить (Warning: This class is provided for convenience when bridging QWidgets and QGraphicsItems, it should not be used for high-performance scenarios.). Может и не критично.
Инородны в плане внешнего вида. Т.е. ,грубо говоря, стиль виджета надо подогнать под содержимое сцены.
Записан
_OLEGator_
Гость
« Ответ #5 : Март 13, 2011, 22:03 »

ну собственно мы автору уже предоставили выбор)
какой там стиль у списка, только краев, а делегат все равно самому реализовывать скорее всего надо будет...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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