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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Перегрузка QGraphicsView, не отображаются элементы сцены  (Прочитано 10431 раз)
elive
Гость
« Ответ #15 : Март 29, 2010, 13:25 »

Код
C++ (Qt)
     QPoint p( mapToScene( e->pos() ).toPoint() );
     QGraphicsItem* item = itemAt( p );
 
PS. Если елементы пересекаются, используйте items().

Это работает, если найти точку с точностью до сотых. Попробовал через items(x,y, h, w), вроде работает, если сцену выровнять с координтной системой View. Методом тыка получил setSceneRect(-9, -159, w, h), не знаю почему так.

Так же узнать item на который кликнули можно используя:
Код
C++ (Qt)
QGraphicsView::mouseMoveEvent(event);
QGraphicsItem * item = scene()->mouseGrabberItem();

Только в этом случае item-ы должны принимать события мыши, иначе будет 0.

 Работает, но только 1 раз. Потом данное событие срабатывает в любом случае, куда бы я не кликнул на сцене. То есть, нажимаю на айтем1, выводится информация об айтем1. Потом, куда бы я не кликал, выводится информация айтем1.
 Прописал e->accept(). Не помогает, фокус остаётся на первом айтеме.
« Последнее редактирование: Март 29, 2010, 13:27 от elive » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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