Russian Qt Forum
Ноябрь 05, 2024, 22:15
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Выпадающий виджет
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Выпадающий виджет (Прочитано 9058 раз)
kibsoft
Хакер
Offline
Сообщений: 625
Выпадающий виджет
«
:
Март 15, 2010, 20:49 »
Подскажите пожалуйста, как можно реализовать выпадающий виджет(желательно QTabWidget), например как в IM клиентах при клике на кнопку смайлов. Пробовал создавать QTabWidget, родителем делал окно в котором есть toolbar с кнопкой, по нажатию которой виджет появлялся..но почему то фон всегда белый и нет авторазмера. А как отдельное окно не катит Надо чтобы прям под кнопкой вываливался.
Пример:
Записан
http://kibsoft.ru
- Download the Qt Media Encoding Library here
The apps that were written using QtMEL:
http://srecorder.com
- Screen recording software
ufna
Гость
Re: Выпадающий виджет
«
Ответ #1 :
Март 15, 2010, 21:07 »
это отдельный виджет, с frameless hint'ом.
наследуй QWidget, создавай с данным флагом, в пейнт эвенте определи все что нужно по фонам и т.п.
Записан
kibsoft
Хакер
Offline
Сообщений: 625
Re: Выпадающий виджет
«
Ответ #2 :
Март 15, 2010, 21:21 »
Вопрос решен. Убрал парента, убрал рамку вокруг окна и используя mapToGlobal разместил виджет под кнопкой..
Записан
http://kibsoft.ru
- Download the Qt Media Encoding Library here
The apps that were written using QtMEL:
http://srecorder.com
- Screen recording software
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #3 :
Апрель 01, 2010, 13:03 »
решил сделать что-то похожее, но мучает вопрос: по какому признаку прятать диалог/виджет? вот combobox знает когда я нажал где-то нажал на форме или вообще окно потеряло фокус
Записан
sendevent
Гость
Re: Выпадающий виджет
«
Ответ #4 :
Апрель 01, 2010, 14:01 »
Цитата: kkk777kkk от Апрель 01, 2010, 13:03
решил сделать что-то похожее, но мучает вопрос: по какому признаку прятать диалог/виджет? вот combobox знает когда я нажал где-то нажал на форме или вообще окно потеряло фокус
отслеживать фокус - QWidget::focus[In|Out]Event и QWidget::[enter|leave]Event.
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #5 :
Апрель 01, 2010, 15:20 »
пасип, как-то сам не додумался, буду пробовать
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #6 :
Апрель 01, 2010, 15:42 »
вот не знаю почему, но
QWidget::focus[In|Out]Event - не могу словить
QWidget::[enter|leave]Event - ловлю нормально
update:
если на свой диалог травлю setFocus(); тогда получается словить focusEvent, но если потом активирую lineEdit, то получаю событие focusOutEvent
«
Последнее редактирование: Апрель 01, 2010, 15:49 от kkk777kkk
»
Записан
sendevent
Гость
Re: Выпадающий виджет
«
Ответ #7 :
Апрель 01, 2010, 15:55 »
1. попробуй задать FocusPolicy - StrongFocus.
2.
Цитировать
но если потом активирую lineEdit, то получаю событие focusOutEvent
ну вроде правильно - фокус же передается активированному лайнедиту, значит, уходит от виджета... или я чегото не понял.
«
Последнее редактирование: Апрель 01, 2010, 15:59 от sendevent
»
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #8 :
Апрель 01, 2010, 15:59 »
получается, что когда я выбираю контрол на этом диалоге (на котором ловлю фокус), то они забирают фокус на себя и считается, что диалог уже не имеет фокуса... как же ж сделать это красиво, можно конечно попробовать проверять все дочерние контролы на наличие фокуса, но это не красиво
Записан
Sergey B.
Программист
Offline
Сообщений: 544
Re: Выпадающий виджет
«
Ответ #9 :
Апрель 01, 2010, 17:20 »
пусть элемент выбранный эмитет сигнал, а его уже лови в диалоге и что-то делай с ним- к примеру возвращай в родительский диалог
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #10 :
Апрель 02, 2010, 10:25 »
а по какому событию предлагаешь?
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #11 :
Апрель 02, 2010, 10:44 »
я все-таки сделал это. сделал через
Код:
void QWidget::setFocusProxy ( QWidget * w )
и для тех контролов, которые у меня это работает, но для QlineEdit как-то подозрительно, но мне он не нужен
Записан
kkk777kkk
Гость
Re: Выпадающий виджет
«
Ответ #12 :
Апрель 06, 2010, 16:33 »
как оказалось это были извращения, а сделал все за меня член enum Qt::WindowType флаг Qt::Popup !
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...