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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как покинуть перекрытый элемент, входя в перекрывающий?  (Прочитано 4490 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Апрель 12, 2010, 09:14 »

утром в понедельник не могу сразу сообразить, как сделать, чтобы если айтем полностью или частично перекрыт другим айтемом (например, перекрывающий меньше перекрываемого), то при пересечении границы перекрывающего, чтобы у перекрываемого сначала вызывался hoverLeaveEvent(), а потом вызывался hoverEnterEvent() перекрывающего

вроде по описанию похож флаг ItemClipsToShape, но он работает совершенно иначе

иначе, кроме как влоб самому вызывать при в методе входа потомка метод выхода у его родителя - ничего не видно

наверно есть другой флаг какой-то, но с недосыпа не вижу  Грустный

...

ага, фик, влоб в реализованной схеме наследования просто сделать

Код:
	if( parentItem() )
parentItem()->hoverLeaveEvent(event);

нельзя, ругается, что этот метод protected, придется ломать все Грустный

и если перекрывающий айтем начнет двигаться, то вообще бред получается, надо руками отслеживать на кого он потом может наехать, в зависимости от его положения в стеке и т.д.  Злой

должен же быть флаг для таких случаев...
« Последнее редактирование: Апрель 12, 2010, 09:48 от Гурман » Записан

2^7-1 == 127, задумайтесь...
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 12, 2010, 09:48 »

>>чтобы у перекрываемого сначала вызывался hoverLeaveEvent(), а потом вызывался hoverEnterEvent()
А как происходит сейчас?

Я так понимаю речь про графическое представление?
Записан

Юра.
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Апрель 12, 2010, 09:56 »

сейчас при наезде на перекрывающий, вызывается только его метод hoverEnterEvent(), при этом мы остаемся "над" перекрытым, из его пространства мы не выходим (наверняка, если итемы частично перекрыты, то возможна ситуация, когда останемся над перекрывающим, но выйдем из перекрытого)

по-умолчанию работает правильно "с геометрической точки зрения", но мне надо выйти из перекрытого, чтобы его по-другому отрисовать, поскольку уже не он, а перекрывающий будет принимать мышиные клики и пр.
« Последнее редактирование: Апрель 12, 2010, 09:58 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Апрель 12, 2010, 10:24 »

там есть метод для получения перекрытых айтемов. Можно от него плясать
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Апрель 12, 2010, 10:34 »

в прицнипе, можно, но надо тогда выяснять, какие из перекрытых айтемов перекрыты частично, поскольку если въехать в перекрывающий "с другой стороны", то с перекрытыми ничего делать не надо, а если въехать над кем-то, то делать надо только с одним перекрытым, со стороны которого собственно въехали

в общем, глупая колбаса пока получается, с какой стороны ни подойти  Злой

хотя должен быть просто флаг "айтем монополизирует ховер", который если взведен, все это проделывает на уровне тулкита

задача ведь достаточно часто встречающаяся...
Записан

2^7-1 == 127, задумайтесь...
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Апрель 12, 2010, 10:50 »

я проблемы не вижу. У вас же 1 активный элемент. Подсвечивать его надо в момент ховер энтрер, при этом предыдущий подсветку убирать. А ховер лив юзать только для убирания подсветки когда нет активных айтемов. Чтобы это реализовать, нужна 1 переменная и 2 проверки.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Апрель 12, 2010, 10:57 »

ха! так оно еще и не так банально по-умолчанию работает

при входе в перекрывающий элемент, если он дитя перекрытого, вызывается не только его метод входа, но и метод входа у родителя... блин

Цитировать
Подсвечивать его надо в момент ховер энтрер, при этом предыдущий подсветку убирать

ну и как узнать, у кого убирать подсветку? тупо у "родителя" - не годится

остается только получение списка коллизий, и убирать подсветку у всех перекрытых, но при этом находятся не под курсором...

потому как при выходе из перекрывающего в перекрытый, последний должен засветиться, а перекрывающий погаснуть

так что не "1 переменная и 2 проверки"
« Последнее редактирование: Апрель 12, 2010, 11:00 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #7 : Апрель 12, 2010, 13:50 »

не, барахло получается...

написал запрос на багтрекере, поддержите плз
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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