Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2011, 12:30   #1
woodsnake
 
Регистрация: 10.08.2011
Сообщений: 4
Вопрос Определение объекта под курсором

Добрый день.
Вопрос в принципе по Qt, но интересуют все возможные реализации.
Как определяется объект (например виджет на форме), на который наведен курсор. Перебор всех имеющихся объектов и сопоставление их координат/размеров с точкой курсора кажется слишком громоздким...
woodsnake вне форума Ответить с цитированием
Старый 10.08.2011, 13:45   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

А как бы, по-твоему, называлась бы функция, которая возвращает указатель на объект, находящийся в позиции P?

Правильно, widgetAt(P).
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 10.08.2011, 14:46   #3
woodsnake
 
Регистрация: 10.08.2011
Сообщений: 4
По умолчанию

Интересует не функция, а технология. На самом низком уровне.

Грубо говоря: есть множество геометрических объектов на плоскости. Случайным образом падает точка (курсор). Как опеределяется в какой она попала?

Последний раз редактировалось woodsnake; 10.08.2011 в 14:49.
woodsnake вне форума Ответить с цитированием
Старый 11.08.2011, 06:39   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

BSP-деревья: http://ru.wikipedia.org/wiki/%D0%94%...82%D0%B2%D0%B0
Но в случае виджетов, используется не оно. Оно используется в Scene-View.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 11.08.2011, 12:09   #5
woodsnake
 
Регистрация: 10.08.2011
Сообщений: 4
По умолчанию

Хорошая статьтя, спасибо!

Здесь скорее в более общем: http://ru.wikipedia.org/wiki/Обнаружение_столкновений
Хотя, по-сути, сводится все равно к перебору...

Последний раз редактировалось woodsnake; 11.08.2011 в 12:32.
woodsnake вне форума Ответить с цитированием
Старый 11.08.2011, 13:38   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Конкретно в Scene-View в Qt по умолчанию используются BSP-деревья. А вообще, исходники открыты, сами можете посмотреть и на QCoreApplication::widgetAt, и на QGraphicsScene::itemAt.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 15.08.2011, 13:34   #7
woodsnake
 
Регистрация: 10.08.2011
Сообщений: 4
По умолчанию

Поиск окна, в которое тыкнули мышкой реализуется ОС: в винде используется функция WindowFromPoint.
Поиск виджета в окне в Qt реализовано перебором... =(

Остаётся вопрос реализации WindowsFromPoint. Какие аналогичные функции есть в других ОС и как они работают?
woodsnake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слово под курсором Vikenty Общие вопросы Delphi 4 12.04.2011 23:58
перемещение объекта за курсором мышки eu8cc Общие вопросы Delphi 2 28.09.2009 22:48
Координаты под курсором на TChart tvorec2008 Помощь студентам 0 18.09.2009 20:18
Получение слова под курсором. lazutov Win Api 4 15.08.2008 17:10
окно под курсором mrandrey Win Api 1 11.05.2007 18:30