Russian Qt Forum
Ноябрь 25, 2024, 14:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с передачей фокуса  (Прочитано 5037 раз)
merke
Гость
« : Август 10, 2011, 15:54 »

Всем привет.

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

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Август 10, 2011, 18:46 »

Повесь на всплывающий виджет grabMouse(). После того как будешь убирать этот виджет граб сними через releaseMouse().
Записан

Qt 5.11/4.8.7 (X11/Win)
merke
Гость
« Ответ #2 : Август 10, 2011, 18:48 »

А можно поподробнее, что это даст?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Август 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.
Записан

Qt 5.11/4.8.7 (X11/Win)
merke
Гость
« Ответ #4 : Август 10, 2011, 19:01 »

Спасибо, но я это читал уже, к данной задаче не подходит к сожалению. Это должно работать на подобии простой подсказки - tooltip, Только вместо тултипа должен выскакивать мой виджет, где можно прочитать список и понажимать на кнопочки
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Август 10, 2011, 19:03 »

Спасибо, но я это читал уже, к данной задаче не подходит к сожалению.
Ну-ну, читай дальше.

PS. А коли лень читать, могу посоветовать в качестве top-level окна твоего виджета использовать QMenu)
« Последнее редактирование: Август 10, 2011, 19:06 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
merke
Гость
« Ответ #6 : Август 10, 2011, 19:06 »

А можно вместо стандартного тултипа подсунуть свой?
Записан
merke
Гость
« Ответ #7 : Август 10, 2011, 19:09 »

Получается при наведении курсора на мою "ссылку" нужно будет вызвать грабмаус для виджета? что дальше?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Август 10, 2011, 19:10 »

Получается при наведении курсора на мою "ссылку" нужно будет вызвать грабмаус для виджета? что дальше?
PS. А коли лень читать, могу посоветовать в качестве top-level окна твоего виджета использовать QMenu)
Записан

Qt 5.11/4.8.7 (X11/Win)
merke
Гость
« Ответ #9 : Август 10, 2011, 19:15 »

аха после вызова грабмаус мой виджет покажется и я смогу на нем покликать, а вот теперь как спрятать его опять? неохота на виджете делать кнопочку скрыть(
Записан
ритт
Гость
« Ответ #10 : Август 11, 2011, 10:16 »

QGraphicsWidget(parent, Qt::Popup)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Август 11, 2011, 10:30 »

QGraphicsWidget(parent, Qt::Popup)
И для чего это Непонимающий
Мало того что это будет тормоз так ещё и как истинный типс не будет себя вести, т.к. будет ограничен рамками вьюпорта.

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

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 23.