Здравствуйте, гость ( Вход | Регистрация )
|
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 |
|
|
|
![]() |
|
Elfinit |
30.9.2009, 22:26
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1
|
Да, ещё, брешить на неверно вычисленные координаты тоже не стоит, т.к. "области интереса" (границы прямоугольника, углы) вычисляются точно верно, т.к. перетаскивание границ (за любую границу, за угол, перетаскивание выделенной области) нормально работает, правда вместо нужного курсора показывается ArrowCursor, что, естественно, неудобно жутко....
Цитата(BRE @ 30.9.2009, 23:20) Link Цитата(Elfinit @ 30.9.2009, 23:11) Link Повторюсь, если встаивать этот виджет в диалог, всё срабатывает идеально. А диалоги не пытаются изменяют курсор в зависимости от положения мыши. Цитата(Elfinit @ 30.9.2009, 23:11) Link А для GraphicsView mouseMove я вообще не переопределял, т.к. и не наследовал от него... А зачем от него наследоваться? Каждый виджет на сцене располагается в элементе сцены и ведет себя для QGraphicsView как элемент сцены. Возможно (не точно/IMHO) дело в этом (тоже позволю себе повториться): При перемещении мыши над QGraphicsView он постоянно проверяет над каким элементом сцены находиться мышка и устанавливает курсор на тот который задан в элементе. Возможно происходит следующее, ты меняешь курсор мыши, а следом QGraphicsView меняет его на дефолтный. Т.е. при addWidget на самом деле на сцену вешается GraphicsItem? И вообще, зачем ему менять курсор на дефолтный? К тому же, как уже сказал, для GraphicsItem-ов, которые висят на сцене, курсор меняется без проблем при проведении мыши над ними.... Вот ещё что заметил....Если каким-то чудесным образом курсор всё-таки поменялся на актуальный (например, на SizeHor), то он не меняется вообще ни на какой до тех пор, пока курсор находится над виджетом. Сообщение отредактировал Elfinit - 30.9.2009, 22:35 |
|
|
|
|
BRE |
1.10.2009, 6:52
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Elfinit @ 30.9.2009, 23:26) Link Т.е. при addWidget на самом деле на сцену вешается GraphicsItem? Да, посмотри что возвращает addWidget: QGraphicsProxyWidget * QGraphicsScene::addWidget ( QWidget * widget, Qt::WindowFlags wFlags = 0 ) Цитата(Elfinit @ 30.9.2009, 23:26) Link И вообще, зачем ему менять курсор на дефолтный? Потому что, если для элемента не задан курсор, то использует дефолтный. Как мне кажется, сначала отрабатывает обработчик события перемещения мыши для твоего виджета (там ты меняешь курсор на нужный), а потом отрабатывает этот же обработчик в view (и меняет курсор на тот который задан для элемента и если он не задан, то дефолтный). Посмотри исходники, возможно это можно обойти. |
|
|
|
Elfinit Смена курсора на виджете 30.9.2009, 9:32
kwisp Цитата(Elfinit @ 30.9.2009, 10:32) С чем ... 30.9.2009, 14:36
BRE Цитата(Elfinit @ 30.9.2009, 10:32) С чем ... 30.9.2009, 16:36

Elfinit Цитата(BRE @ 30.9.2009, 17:36) Цитата(Elf... 30.9.2009, 21:42

BRE Цитата(Elfinit @ 30.9.2009, 22:42) Устана... 30.9.2009, 22:02
Elfinit Цитата(kwisp @ 30.9.2009, 15:36) Цитата(E... 30.9.2009, 20:49
ufna Elfinit,
не подскажешь, каким методом метаданные ... 30.9.2009, 21:53
Elfinit Цитата(ufna @ 30.9.2009, 22:53) Elfinit, ... 30.9.2009, 22:11
BRE Цитата(Elfinit @ 30.9.2009, 23:11) Повтор... 30.9.2009, 22:20
kwisp и я позволю себе повториться.
switch
не пугает?
а ... 30.9.2009, 23:07
Elfinit Цитата(kwisp @ 1.10.2009, 0:07) switch
не... 30.9.2009, 23:39
kwisp Цитата(Elfinit @ 1.10.2009, 0:39) т.к. об... 1.10.2009, 8:33
Elfinit Решение:
graphicsProxyWidget() ? graphicsP... 1.10.2009, 18:56![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 17.12.2025, 7:43 |