Название: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 14:13 Привет.
Был у одного диалога флаг Qt::WindowStaysOnTopHint. Я его убрал, но всё равно при переключении на другое приложение, диалог виден. Что ещё может быть не так? Что нужно сделать, чтобы при переключении на другое приложении, я не видел модальных окон моего приложения? Спасибо. Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: gil9red от Февраль 09, 2015, 14:21 Qt::WindowStaysOnBottomHint?
Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: Igors от Февраль 09, 2015, 14:51 У меня то же самое на Вындоуз (пока Qt 5.2, скоро буду обновляться). Сделал так: при переключении на др приложение пробегаюсь по всем окнам и в нативняке снимаю флаги, при активации возвращаю взад. Коряво конечно, но лучшего не нашел.
В общем присоединяюсь к вопросу Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 15:10 Не, не. У меня немного по-другому, про тот баг я уже читал. Я в compile-time просто удалил Qt::WindowStaysOnTopHint, во флагах оставил Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint.
Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: Igors от Февраль 09, 2015, 15:28 Не, не. У меня немного по-другому, про тот баг я уже читал. Я в compile-time просто удалил Qt::WindowStaysOnTopHint, во флагах оставил Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint. Это управление титлом и кнопками в нем, не вижу как оно поможет сделать окно "наверху"Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 15:36 Во чо нашёл:
Код: QWidgetPrivate::create_sys () Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: kambala от Февраль 09, 2015, 16:09 так ты флаг из кода убрал, перекомпилировал, а диалог все равно поверх других приложений отображается?
Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 16:14 Да.
Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: Igors от Февраль 09, 2015, 16:25 Во чо нашёл: Ну это нормально, parent не может перекрывать child'овКод: QWidgetPrivate::create_sys () Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 16:47 Ну это нормально, parent не может перекрывать child'ов Ты не понял. Это означает, что если у parent'a выставлен WindowStaysOnTopHint, то и child'у он неявно поставится. Буду искать, где у меня у parent'a стоит WindowStaysOnTopHint.. Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 09, 2015, 16:57 Копнём немного глубже. Stay On Top устанавливает свойство _NET_WM_STATE у иксов. В приложении выставляется значение свойств _NET_WM_STRUT у пары окон (в том числе и главного), но я что-то не вижу, как оно должно влиять на stay on top.
Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: Igors от Февраль 09, 2015, 17:27 Это означает, что если у parent'a выставлен WindowStaysOnTopHint, то и child'у он неявно поставится. Иначе parent перекроет child'а - а так нельзяИщите все установки WindowStaysOnTopHint в true и ставьте там точки останова Название: Re: Не получается убрать Qt::WindowStaysOnTopHint Отправлено: UVV от Февраль 10, 2015, 12:47 Пришёл к решению в этом треде https://www.linux.org.ru/forum/development/11306527
Вывод: Gnome WM не обрабатывает флаги. |