Название: Popup-окно, как? Отправлено: hordi1 от Мая 30, 2011, 18:06 Приветствую
Нужно создать окно, которое будет автоматом закрываться если кликнуть вне его области. Попробовал установить флаги в конструкторе этого окна setAttribute(Qt::WA_DeleteOnClose, true); setWindowFlags(Qt::Popup), но в итоге окно модальное и клики в другие области не работают... Есть ли какой простой метод кроме как городить велосипед с ивентами на потерю фокуса, координаты мыши и т.п.? В двух словах - окно должно работать как обычное контекстное меню например... Qt-4.7.3 Спасибо Название: Re: Popup-окно, как? Отправлено: GreatSnake от Мая 30, 2011, 18:11 Цитировать В двух словах - окно должно работать как обычное контекстное меню например... Ну и наследуйся от QMenu.Содержимое добавляй через QWidgetAction. Запускай через QMenu::exec(). Название: Re: Popup-окно, как? Отправлено: hordi1 от Мая 30, 2011, 18:13 хм, спасибо, попробую...
Название: Re: Popup-окно, как? Отправлено: asvil от Мая 30, 2011, 18:14 А вроде как отличненько метод close() в переопределенный focusOut(event) ложиться. Вы только создавайтесь просто без рамочки, а не как модельное окно.
Название: Re: Popup-окно, как? Отправлено: hordi1 от Мая 30, 2011, 18:29 А вроде как отличненько метод close() в переопределенный focusOut(event) ложиться. Вы только создавайтесь просто без рамочки, а не как модельное окно. focusOut для модального окна не ловится... Название: Re: Popup-окно, как? Отправлено: asvil от Мая 31, 2011, 10:21 имел ввиду, а не как модальное окно, конечно же.
Название: Re: Popup-окно, как? Отправлено: hordi1 от Мая 31, 2011, 14:21 А вроде как отличненько метод close() в переопределенный focusOut(event) ложиться. Вы только создавайтесь просто без рамочки, а не как модельное окно. Да, так получилось, только setFocus() нужно для него обязательно делать. Используя QMenu также можно, но там добавляются все эти спецэффекты меню, типа плавное выезжание и т.п. Название: Re: Popup-окно, как? Отправлено: p166 от Июня 01, 2011, 12:00 Класс окна наследуем от виджета:
Код: class QMngDev : public QWidget И отлавливаем событие WindowDeactivate: Код: bool QMngDev::event(QEvent *event) Примечание: в Linux должен быть обязательно загружен менеджер окон. Название: Re: Popup-окно, как? Отправлено: GreatSnake от Июня 01, 2011, 12:27 Цитировать Примечание: в Linux должен быть обязательно загружен менеджер окон. В том-то и дело, что для таких окон не нужны декорации вообще и соответственно WM тоже.Имхо, если лень писать обвязку ( отлов потери фокуса, нажатий, навеску грабов, да и того же Esc ) лучше QMenu, в котором всё это уже есть, нет. Название: Re: Popup-окно, как? Отправлено: hordi1 от Июня 01, 2011, 17:38 Цитировать Примечание: в Linux должен быть обязательно загружен менеджер окон. В том-то и дело, что для таких окон не нужны декорации вообще и соответственно WM тоже.Имхо, если лень писать обвязку ( отлов потери фокуса, нажатий, навеску грабов, да и того же Esc ) лучше QMenu, в котором всё это уже есть, нет. Так а что делать со спецеффектами меню? Не знаю как их отрубить, а плавный показ окна мне не нужен. Название: Re: Popup-окно, как? Отправлено: GreatSnake от Июня 01, 2011, 17:45 Так а что делать со спецеффектами меню? Не знаю как их отрубить, а плавный показ окна мне не нужен. Код
|