QGraphicsPixmapItem c "фенечками" |
Здравствуйте, гость ( Вход | Регистрация )
QGraphicsPixmapItem c "фенечками" |
Elfinit |
25.7.2009, 16:29
Сообщение
#1
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Есть QGraphicsScene, на которой куча ThumbnailItem'ов - наследников QGraphicsPixmapItem.
Под каждым из которых может выводиться список "интерактивных элементов". Как пример - пиктограмм фотобанков, на которые была отправлена фотка. Отрисовывать их как обычные QPixmap в ThumbnailItem::paint не составляет труда, НО - они должны быть "интерактивными". Т.е., как минимум, должны реагировать на наведение на них курсора, показывая некий тултип. А в идеале - реагировать на нажатие, запрос контекстного меню и т.п. Эти "фенечки" должны быть жёстко привязаны к своему ThumbnailItem, так что вариант делать их самих QGraphicsItem - ооочень сложно реализуем. Т.к. координаты их зависят от своего THumbnailItem, "информационная нагрузка" - тоже. К тому же, сцена иногда меняет режим отображения и все ThumbnailItem'ы нужно скрыть, так что "фенечки" должны изчезать вместе с ними. Другой пример сложности реализации их как независимого QGraphicsItem - ресайз сцены или резайз самих эскизов. См. скриншот, там внизу сцены ползунок, которым можно регулировать размер эскизов. Так что нужна жёсткая привязка этих штучек к ThumbnailItem. Есть какие-нить соображения?) |
|
|
ufna |
25.7.2009, 20:48
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
Вопрос - а почему их нельзя отнести к нему географически? Что мешает? Можно еще сделать один класс, который будет содержать в себе ThumbnailItem, а так же - эти пиктограммки. Допустим будет это LayoutThumbRect. Тогда в мув эвенте ищем куда попал курсор, на который из этих ректов, затем в этот класс отправляем сии координаты, а он уже смотрит на картинке ли курсор, или же на пиктограммах. Можно еще пути смотреть.
к тому же почему анализ положения курсора в прямоугольниках - не вариант? Вполне даже вариант, для этого есть очень удобный QRect::contains(QPoint). А если их прям такое дикое количество (сотни и т.п.) - можно воспользоваться школьными знаниями и оптимизировать алгоритм поиска, а не просто по циклу все прогонять. можно так же каждой пиктограммке жестко привязывать "родительский тамб", т.е. давать ей указатель на тот объект, к которому она относится. Предоставить ей доступ к управлению тамбом, его стейтом, к примеру, и знать его положение, и от его положения - узнавать свое. Либо я чего-то не понимаю в чем тут идея или что. Насчет QGraphicsPixmapItem и ховер эвентов - если переопределишь эвенты класса правильно, то можно сделать иллюзию сего. Если конечно сий эвент основывается на boundingRect (я точно не знаю). |
|
|
Elfinit |
3.8.2009, 12:45
Сообщение
#3
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Спасибо)
Пока всё же оставил как уже сделал (статичные пиктограммки под миникопией), время появиться - буду по-умному делать) |
|
|
Текстовая версия | Сейчас: 22.12.2024, 12:17 |