Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Август 10, 2011, 15:54



Название: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 15:54
Всем привет.

Есть графическая сцена, на ней размещаются графические объекты типа QGraphicsTextItem в этих объектах я переопределил два метода: hoverLeaveEvent и hoveEnterEvent, в каждом из этих методов я испускаю сигналы соответствующие событию. Эти сигналы я ловлю на главной форме где расположена сцена. Мне это нужно для интерактивной карты, когда я навожу курсор на одну из областей должен появиться виджет с данными об этой области. И вот когда навожу курсор появляется виджет мой и тут же пропадает потом сразу же появляется и пропадает. Я понимаю это из за того что при появлении виджета фокус передается на него и на графическом объекте срабатывает событие Leave потом опять ловиться Enter и опять показывается виджет и происходит всё по кругу.
Помоги советом, как этого избежать?
Буду очень благодарен!!!


Название: Re: Проблемы с передачей фокуса
Отправлено: GreatSnake от Август 10, 2011, 18:46
Повесь на всплывающий виджет grabMouse(). После того как будешь убирать этот виджет граб сними через releaseMouse().


Название: Re: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 18:48
А можно поподробнее, что это даст?


Название: Re: Проблемы с передачей фокуса
Отправлено: GreatSnake от Август 10, 2011, 18:59
А можно поподробнее, что это даст?
Цитата: assistant
void QWidget::grabMouse ()
Grabs the mouse input.
This widget receives all mouse events until releaseMouse() is called; other widgets get no mouse events at all.


Название: Re: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 19:01
Спасибо, но я это читал уже, к данной задаче не подходит к сожалению. Это должно работать на подобии простой подсказки - tooltip, Только вместо тултипа должен выскакивать мой виджет, где можно прочитать список и понажимать на кнопочки


Название: Re: Проблемы с передачей фокуса
Отправлено: GreatSnake от Август 10, 2011, 19:03
Спасибо, но я это читал уже, к данной задаче не подходит к сожалению.
Ну-ну, читай дальше.

PS. А коли лень читать, могу посоветовать в качестве top-level окна твоего виджета использовать QMenu)


Название: Re: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 19:06
А можно вместо стандартного тултипа подсунуть свой?


Название: Re: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 19:09
Получается при наведении курсора на мою "ссылку" нужно будет вызвать грабмаус для виджета? что дальше?


Название: Re: Проблемы с передачей фокуса
Отправлено: GreatSnake от Август 10, 2011, 19:10
Получается при наведении курсора на мою "ссылку" нужно будет вызвать грабмаус для виджета? что дальше?
PS. А коли лень читать, могу посоветовать в качестве top-level окна твоего виджета использовать QMenu)


Название: Re: Проблемы с передачей фокуса
Отправлено: merke от Август 10, 2011, 19:15
аха после вызова грабмаус мой виджет покажется и я смогу на нем покликать, а вот теперь как спрятать его опять? неохота на виджете делать кнопочку скрыть(


Название: Re: Проблемы с передачей фокуса
Отправлено: ритт от Август 11, 2011, 10:16
QGraphicsWidget(parent, Qt::Popup)


Название: Re: Проблемы с передачей фокуса
Отправлено: GreatSnake от Август 11, 2011, 10:30
QGraphicsWidget(parent, Qt::Popup)
И для чего это ???
Мало того что это будет тормоз так ещё и как истинный типс не будет себя вести, т.к. будет ограничен рамками вьюпорта.

аха после вызова грабмаус мой виджет покажется и я смогу на нем покликать, а вот теперь как спрятать его опять? неохота на виджете делать кнопочку скрыть(
ещё раз повторюсь - размещай все свои контролы на QMenu и ни с какими грабами не придётся связываться, т.к. всё уже сделано в QMenu.
При нажатии на Esc или нажатии кнопкой мыши за границами окна твой типс пропадёт точно также как ведёт себя попап меню.