Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Kurles от Февраля 01, 2012, 06:35



Название: eventFilter за пределами окна с флагом Qt::Popup.
Отправлено: Kurles от Февраля 01, 2012, 06:35
Здравствуйте! Такой вопрос: есть некая форма, с произвольными виджетами, скомпонованными с помощью лейаутов, внизу этой формы блок кнопок:

(http://fotohosting.org/thumb.php?id=60CA_4F286B1A) (http://fotohosting.org/share.php?id=60CA_4F286B1A)

Задача: вверху этих кнопок поверх существующих виджетов, без изменения их геометрии, нарисовать еще один блок кнопок. На вскидку задача решается с помощью вывода еще одного окна в нужную нам область экрана, с установленным флагом Qt::Popup, но одна беда: при выводе этого попапа все остальные виджеты, включая нижний ряд кнопок, что критично, перестают получать события от мыши, такие как QEvent::HoverEnter и QEvent::HoverLeave, до того момента, пока попап не закрыт. В какую сторону копать, что бы разрешить нижним кнопкам реагировать на мышиные события до закрытия окна с попапом? Ведь в QtCreator'е как то это реализовано, при выводе попапа нужные ему кнопки подсвечиваются?
(http://fotohosting.org/thumb.php?id=671D_4F28AED5) (http://fotohosting.org/share.php?id=671D_4F28AED5)
Пытался там подсмотреть, но из тех мегабайтов кода нужный кусок не удалось вычленить :(


Название: Re: eventFilter за пределами окна с флагом Qt::Popup.
Отправлено: Bepec от Февраля 01, 2012, 08:21
А помоему вы фигней страдаете ;)

Насколько я понимаю, ваш рисунок с Creator'a это обычный modelView, а вовсе не "виджеты нарисованные поверх виджетов".

PS ответ на вопрос темы(пусть и какой то странноватый): Просто выводи ещё 1 виджет,  и давай ему родителя того, на ком рисовать будешь.


Название: Re: eventFilter за пределами окна с флагом Qt::Popup.
Отправлено: Kurles от Февраля 01, 2012, 16:24
А помоему вы фигней страдаете ;)
Вполне возможно :)
Насколько я понимаю, ваш рисунок с Creator'a это обычный modelView, а вовсе не "виджеты нарисованные поверх виджетов".
правое окно, где комбобоксы - как раз окно, созданное с флагом Qt::Popup, выводиться поверх QListView, и при этом кнопочки "run", "debug" и "build" получают события от мыши.
(http://fotohosting.org/thumb.php?id=4BA5_4F293BD1) (http://fotohosting.org/share.php?id=4BA5_4F293BD1) - на этой картинке вроде чуть более понятно :)
PS ответ на вопрос темы(пусть и какой то странноватый): Просто выводи ещё 1 виджет,  и давай ему родителя того, на ком рисовать будешь.
Примерно так и планирую сделать, если вопрос с Qt::Popup не решиться :)


Название: Re: eventFilter за пределами окна с флагом Qt::Popup.
Отправлено: Bepec от Февраля 01, 2012, 18:05
А вы не пробовали создать виджет, с родителем QMainWindow(вашим основным окном?).

Насколько я помню, в моей одной программе, реализован такой "блуждающий виджет поверх всех", при этом не относящийся ни к одному компоновщику ;)