Название: Выпадающий виджет Отправлено: kibsoft от Март 15, 2010, 20:49 Подскажите пожалуйста, как можно реализовать выпадающий виджет(желательно QTabWidget), например как в IM клиентах при клике на кнопку смайлов. Пробовал создавать QTabWidget, родителем делал окно в котором есть toolbar с кнопкой, по нажатию которой виджет появлялся..но почему то фон всегда белый и нет авторазмера. А как отдельное окно не катит Надо чтобы прям под кнопкой вываливался.
Пример: (http://rghost.ru/1171575/thumb.png) (http://rghost.ru/1171575.view) Название: Re: Выпадающий виджет Отправлено: ufna от Март 15, 2010, 21:07 это отдельный виджет, с frameless hint'ом.
наследуй QWidget, создавай с данным флагом, в пейнт эвенте определи все что нужно по фонам и т.п. Название: Re: Выпадающий виджет Отправлено: kibsoft от Март 15, 2010, 21:21 Вопрос решен. Убрал парента, убрал рамку вокруг окна и используя mapToGlobal разместил виджет под кнопкой..
Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 01, 2010, 13:03 решил сделать что-то похожее, но мучает вопрос: по какому признаку прятать диалог/виджет? вот combobox знает когда я нажал где-то нажал на форме или вообще окно потеряло фокус
Название: Re: Выпадающий виджет Отправлено: sendevent от Апрель 01, 2010, 14:01 решил сделать что-то похожее, но мучает вопрос: по какому признаку прятать диалог/виджет? вот combobox знает когда я нажал где-то нажал на форме или вообще окно потеряло фокус отслеживать фокус - QWidget::focus[In|Out]Event и QWidget::[enter|leave]Event.Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 01, 2010, 15:20 пасип, как-то сам не додумался, буду пробовать ::)
Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 01, 2010, 15:42 вот не знаю почему, но
QWidget::focus[In|Out]Event - не могу словить QWidget::[enter|leave]Event - ловлю нормально update: если на свой диалог травлю setFocus(); тогда получается словить focusEvent, но если потом активирую lineEdit, то получаю событие focusOutEvent Название: Re: Выпадающий виджет Отправлено: sendevent от Апрель 01, 2010, 15:55 1. попробуй задать FocusPolicy - StrongFocus.
2. Цитировать но если потом активирую lineEdit, то получаю событие focusOutEvent ну вроде правильно - фокус же передается активированному лайнедиту, значит, уходит от виджета... или я чегото не понял.Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 01, 2010, 15:59 получается, что когда я выбираю контрол на этом диалоге (на котором ловлю фокус), то они забирают фокус на себя и считается, что диалог уже не имеет фокуса... как же ж сделать это красиво, можно конечно попробовать проверять все дочерние контролы на наличие фокуса, но это не красиво
Название: Re: Выпадающий виджет Отправлено: Sergey B. от Апрель 01, 2010, 17:20 пусть элемент выбранный эмитет сигнал, а его уже лови в диалоге и что-то делай с ним- к примеру возвращай в родительский диалог
Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 02, 2010, 10:25 а по какому событию предлагаешь?
Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 02, 2010, 10:44 я все-таки сделал это. сделал через
Код: void QWidget::setFocusProxy ( QWidget * w ) Название: Re: Выпадающий виджет Отправлено: kkk777kkk от Апрель 06, 2010, 16:33 как оказалось это были извращения, а сделал все за меня член enum Qt::WindowType флаг Qt::Popup !
|