Смена курсора на виджете |
Здравствуйте, гость ( Вход | Регистрация )
Смена курсора на виджете |
Elfinit |
30.9.2009, 9:32
Сообщение
#1
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Доброе утро!
В общем, есть виджет PhotoFormatter, предназначенный для обрезки краёв фотографии. Может встраиваться в отдельный диалог, а может и в главное окно, в GraphicsView. При наведении курсора на края выделенной области он меняется, соответственно, на разные стрелки ресайза. А при наведении на выделенную область - на OpenHand, для перемещения выделенной области. Так вот, в случае диалога это срабатывает идеально, при работе в GraphicsView - курсор почти всегда не меняется. С чем это может быть связано? Вот код функции определения вида курсора: Раскрывающийся текст
Сообщение отредактировал Litkevich Yuriy - 1.10.2009, 6:06 |
|
|
kwisp |
30.9.2009, 14:36
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
BRE |
30.9.2009, 16:36
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
С чем это может быть связано? Может быть связано с тем, что QGraphicsView сам изменяет курсор в зависимости от объекта над которым находиться мышка. Это изменение, на сколько я помню, происходит в обработчике события mouseMoveEvent. Где ты устанавливаешь свой курсор? Покажи код. Сообщение отредактировал BRE - 30.9.2009, 16:37 |
|
|
Elfinit |
30.9.2009, 21:42
Сообщение
#4
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
С чем это может быть связано? Может быть связано с тем, что QGraphicsView сам изменяет курсор в зависимости от объекта над которым находиться мышка. Это изменение, на сколько я помню, происходит в обработчике события mouseMoveEvent. Где ты устанавливаешь свой курсор? Покажи код. Устанавливаю как раз в методе getCursorPosition (в конце каждого из условий вызывается setCursor). Для GraphicsView курсор я нигде не меняю вроде. Кстати, для GrapicsPixmapItem'ов, которые вшаются на сцену, курсор срабатывает нормально. Например, режим просмотра большой фотки - при наведении на фотку курсор меняется на лупу, двойной клик приводит к увеличению. Или в режиме просмотра набора фоток, когда на сцене висит куча айтемов, курсор при наведении меняется на ладошку. А вот если на сцену вешать не GraphicsItem, а Widget, то курсор элегантно слетает..... Сообщение отредактировал Elfinit - 30.9.2009, 21:59 |
|
|
BRE |
30.9.2009, 22:02
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Устанавливаю как раз в методе getCursorPosition (в конце каждого из условий вызывается setCursor). Для GraphicsView курсор я нигде не меняю вроде. Откуда вызывается эта функция? При перемещении мыши над QGraphicsView он постоянно проверяет над каким элементом сцены находиться мышка и устанавливает курсор на тот который задан в элементе. Возможно происходит следующее, ты меняешь курсор мыши, а следом QGraphicsView меняет его на дефолтный. Сообщение отредактировал BRE - 30.9.2009, 22:03 |
|
|
Текстовая версия | Сейчас: 29.4.2024, 20:28 |