Russian Qt Forum
Ноябрь 23, 2024, 22:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
как покинуть перекрытый элемент, входя в перекрывающий?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как покинуть перекрытый элемент, входя в перекрывающий? (Прочитано 4483 раз)
Гурман
Гуру общения
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
Сообщений: 3880
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #1 :
Апрель 12, 2010, 09:48 »
>>чтобы у перекрываемого сначала вызывался hoverLeaveEvent(), а потом вызывался hoverEnterEvent()
А как происходит сейчас?
Я так понимаю речь про графическое представление?
Записан
Юра.
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #2 :
Апрель 12, 2010, 09:56 »
сейчас при наезде на перекрывающий, вызывается только его метод hoverEnterEvent(), при этом мы остаемся "над" перекрытым, из его пространства мы не выходим (наверняка, если итемы частично перекрыты, то возможна ситуация, когда останемся над перекрывающим, но выйдем из перекрытого)
по-умолчанию работает правильно "с геометрической точки зрения", но мне надо выйти из перекрытого, чтобы его по-другому отрисовать, поскольку уже не он, а перекрывающий будет принимать мышиные клики и пр.
«
Последнее редактирование: Апрель 12, 2010, 09:58 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #3 :
Апрель 12, 2010, 10:24 »
там есть метод для получения перекрытых айтемов. Можно от него плясать
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #4 :
Апрель 12, 2010, 10:34 »
в прицнипе, можно, но надо тогда выяснять, какие из перекрытых айтемов перекрыты частично, поскольку если въехать в перекрывающий "с другой стороны", то с перекрытыми ничего делать не надо, а если въехать над кем-то, то делать надо
только с одним перекрытым
, со стороны которого собственно въехали
в общем, глупая колбаса пока получается, с какой стороны ни подойти
хотя должен быть просто флаг "айтем монополизирует ховер", который если взведен, все это проделывает на уровне тулкита
задача ведь достаточно часто встречающаяся...
Записан
2^7-1 == 127, задумайтесь...
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #5 :
Апрель 12, 2010, 10:50 »
я проблемы не вижу. У вас же 1 активный элемент. Подсвечивать его надо в момент ховер энтрер, при этом предыдущий подсветку убирать. А ховер лив юзать только для убирания подсветки когда нет активных айтемов. Чтобы это реализовать, нужна 1 переменная и 2 проверки.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #6 :
Апрель 12, 2010, 10:57 »
ха! так оно еще и не так банально по-умолчанию работает
при входе в перекрывающий элемент, если он дитя перекрытого, вызывается не только его метод входа, но и метод входа у родителя... блин
Цитировать
Подсвечивать его надо в момент ховер энтрер, при этом предыдущий подсветку убирать
ну и как узнать,
у кого
убирать подсветку? тупо у "родителя" - не годится
остается только получение списка коллизий, и убирать подсветку у всех перекрытых, но при этом находятся не под курсором...
потому как при выходе из перекрывающего в перекрытый, последний должен засветиться, а перекрывающий погаснуть
так что не "1 переменная и 2 проверки"
«
Последнее редактирование: Апрель 12, 2010, 11:00 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: как покинуть перекрытый элемент, входя в перекрывающий?
«
Ответ #7 :
Апрель 12, 2010, 13:50 »
не, барахло получается...
написал запрос на
багтрекере
, поддержите плз
Записан
2^7-1 == 127, задумайтесь...
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...