Смена курсора на виджете |
Здравствуйте, гость ( Вход | Регистрация )
Смена курсора на виджете |
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 |
|
|
ufna |
30.9.2009, 21:53
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
Elfinit,
не подскажешь, каким методом метаданные из изображения вытаскиваешь? Имеешь ли дело с EXIF? |
|
|
Elfinit |
30.9.2009, 22:11
Сообщение
#3
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Elfinit, не подскажешь, каким методом метаданные из изображения вытаскиваешь? Имеешь ли дело с EXIF? Да, с ним самым. Библиотека называется exiv2 (http://www.exiv2.org). Под линуксом её даже собирать не надо, всего и делов - скачать пакет и прилинковаться к нему. Инструкция по винде есть тут , сам когда-то ковырялся с этим... Устанавливаю как раз в методе getCursorPosition (в конце каждого из условий вызывается setCursor). Для GraphicsView курсор я нигде не меняю вроде. Откуда вызывается эта функция? При перемещении мыши над QGraphicsView он постоянно проверяет над каким элементом сцены находиться мышка и устанавливает курсор на тот который задан в элементе. Возможно происходит следующее, ты меняешь курсор мыши, а следом QGraphicsView меняет его на дефолтный. Вот код для маусМува виджета:
Повторюсь, если встаивать этот виджет в диалог, всё срабатывает идеально. А для GraphicsView mouseMove я вообще не переопределял, т.к. и не наследовал от него... Сообщение отредактировал Elfinit - 30.9.2009, 22:13 |
|
|
BRE |
30.9.2009, 22:20
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Повторюсь, если встаивать этот виджет в диалог, всё срабатывает идеально. А диалоги не пытаются изменяют курсор в зависимости от положения мыши. А для GraphicsView mouseMove я вообще не переопределял, т.к. и не наследовал от него... А зачем от него наследоваться? Каждый виджет на сцене располагается в элементе сцены и ведет себя для QGraphicsView как элемент сцены. Возможно (не точно/IMHO) дело в этом (тоже позволю себе повториться): При перемещении мыши над QGraphicsView он постоянно проверяет над каким элементом сцены находиться мышка и устанавливает курсор на тот который задан в элементе. Возможно происходит следующее, ты меняешь курсор мыши, а следом QGraphicsView меняет его на дефолтный. |
|
|
Текстовая версия | Сейчас: 29.4.2024, 20:05 |