Название: Окно, которое само закрывается при клике за его пределы. Отправлено: serkol от Декабрь 12, 2010, 22:55 Есть окно (немодальный диалог), которое должно само закрываться, если пользователь кликнул куда-нибудь за его пределы. Как это сделать?
Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: crossly от Декабрь 13, 2010, 00:22 отловить focusOutEvent и закрыть....
Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: serkol от Декабрь 13, 2010, 00:36 focusOutEvent какого виджета? focusOutEvent диалога никогда не вызывается. И вообще, на некоторых диалогах нет ни одного виджета, который может быть в "фокусе" (например когда на окне диалога только QLabel)
Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: crossly от Декабрь 13, 2010, 00:42 Цитировать focusOutEvent диалога никогда не вызывается. с чего вдруг??Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: serkol от Декабрь 13, 2010, 00:54 А что, должен вызываться? Вы теоретизируете, или у вас на самом деле вызывается?
Я добавил метод в диалог: Код: void DlgHtmlMessage::focusOutEvent ( QFocusEvent * event ) { поставил на него breakpoint - он никогда не вызывается, куда бы я ни кликал, хоть на другое окно программы, хоть на десктоп, хоть на другую программу. Название: решено Отправлено: serkol от Декабрь 13, 2010, 02:31 Наверное не самый элегантный способ, но работает.
Окно, которое должно закрыться при клике вне его границ, должно отловить событие QEvent::WindowDeactivate Как нормально отлавливать это событие, мне не совсем ясно (я новичок в Qt). Я использовал installEventFilter Код: this->installEventFilter(this); Код: bool DlgHtmlMessage::eventFilter(QObject *obj, QEvent *event) { Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: fuCtor от Декабрь 13, 2010, 07:56 Можно переопределить метод event и из фильтра перенести в него все.
Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: serkol от Декабрь 13, 2010, 08:20 @fuCtor: спасибо! Я почему-то не мог подумать что базовый класс (QObject) еще и события обрабатывает :-)
Название: Re: Окно, которое само закрывается при клике за его пределы. Отправлено: SABROG от Декабрь 13, 2010, 12:02 Такой еще вариант:
Код
|