Russian Qt Forum
Ноябрь 24, 2024, 06:14
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup (Прочитано 5176 раз)
mal
Гость
Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup
«
:
Июнь 21, 2007, 11:04 »
Доброе время суток!
Есть наследник QGraphicsItemGroup (назовем его grp) , в него помещено N элементов, наследников,например, QGraphicsLineItem *p_item.
Для группы заданы свойства:
grp.setAcceptsHoverEvents(true);
grp.setFlag(QGraphicsItem::ItemIsFocusable,true);
grp.setHandlesChildEvents(true);
для детей группы также заданы свойства:
p_item->setAcceptsHoverEvents(true);
p_item->setFlag(QGraphicsItem::ItemIsFocusable,true);
События
void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
переопределены и в классе группы и в классе "айтемов" детей.
Однако событие hoverEnterEvent приходит только в объект группы и никак не ловится в его детях.
*
К примеру: мне надо определить над каким элементом группы находится курсор. Приходиться брать список элементов группы (QList<QGraphicsItem *> QGraphicsItem::children () const )
и далее шариться по списку проверяя не попадает ли курсор в boundingRect соответствующего item'а. Что не есть гуд.
*
Подскажите, сталкивался ли кто с описаной проблемой, и как ее решал? Т.е. как заставить ребенка группы ловить hoverEnterEvent ? детей группы!
добавлено спустя 2 часа:
Сам же уже и отвечу ибо разобрался :-)
для группы надо установить
setHandlesChildEvents(false);
тогда она будет принимать сообщения mouseMove от ребенка, но не будет перехватывать hoverEvent'ы и ребенок будет ловить
void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
Вопрос с повестки снят ;-)
Записан
d.rogkov
Гость
Re: Qt 4.3.0 hoverEnterEvent для для ребенка QGraphicsItemGroup
«
Ответ #1 :
Июнь 06, 2009, 22:11 »
Спасибо, что разобрался!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...