Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: deMax от Март 06, 2018, 14:45



Название: закрыть QDialog при потере фокуса
Отправлено: deMax от Март 06, 2018, 14:45
Собственно сабж, я правильно понимаю всем кнопкам диалога(кроме кнопок больше ничего фокусирующегося там нет) надо переопределить focusout который будет посылать сигнал диалогу, а диалог будет проверять если все кнопки потеряли фокус - делать reject();
или есть способ менее извратный?
Если диалогу фокус поставить(что не правильно), то focusout вызывается когда на кнопку фокус переходит.

И опять же, если кликнуть вне приложения диалог закрывается. А вот если кликнуть мышкой вне диалога, но внутри приложения, то фокус не теряется...


Название: Re: закрыть QDialog при потере фокуса
Отправлено: deMax от Март 06, 2018, 17:19
setWindowFlags((windowFlags() | Qt::FramelessWindowHint | Qt::Popup) & ~Qt::Dialog);
снес флаг Qt::Dialog заработало.


Название: Re: [SOLVED]закрыть QDialog при потере фокуса
Отправлено: deMax от Март 12, 2018, 14:58
Обнаружилась проблема. фокус рисуется не на нужной кнопке:
кнопки ok, cancel, all
поставил фокус на cancel, фокус рисует на кнопке all хотя реально он находиться на кнопке cancel(видно при нажатии кнопки или перемещении).

если QDialog убрать, рисуется правильно, но тогда форма не теряет фокус и не закрывается автоматически.