Название: Как спрятать окно от Mission Control (macOS) Отправлено: posix от Январь 15, 2017, 08:25 Задача была следующая, при запуске приложения, открывать два окна: QMainWindow и QDialog. QDialog должен быть скрыт от оконного менеджера, то есть пользователь не должен перемещать, ресайзить или закрывать это окно. Воспользовавшись Qt::WindowFlags я это и сделал:
Код: Qt::SplashScreen | Qt::WindowStaysOnTopHint | Qt::NoDropShadowWindowHint Но дальше обнаружился неприятный момент, если в macOS запустить это приложение и открыть Mission Control, то QDialog распознается им как окно и пользователь получает возможность им управлять. Привем в стандартных примерах есть widgets/widgets/windowflags (http://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html), если там выставить флаг Qt::SplashScreen, то работает именно так, как нужно - в Mission Control окошко PreviewWindow скрывается. Не могу понять в чем именно дело, сравнивал флаги в примере и моем приложении абсолютно одинаковые qDebug() << this->windowFlags() Код: QFlags<Qt::WindowType>(SplashScreen|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowStaysOnTopHint|WindowCloseButtonHint|NoDropShadowWindowHint|WindowFullscreenButtonHint) В чем может быть дело? Код абсолютно одинаковый, за исключением того, что в примере не использовался конструктор форм qtcreator: Код: Alert::Alert(QWidget *parent) : Код: alert = new Alert(); Название: Re: Как спрятать окно от Mission Control (macOS) Отправлено: kambala от Январь 15, 2017, 14:54 тоже не могу воспроизвести в widgets/widgets/windowflags, также пробовал менять на QDialog + загружать его из ui-файла и использовать твой код в конструкторе. Пробовал на 5.6 и 5.8, ос 10.11.
Выложи минимальный компилируемый пример с ошибкой. Название: Re: Как спрятать окно от Mission Control (macOS) Отправлено: posix от Январь 15, 2017, 15:48 Разобрался в чем было дело: ранее по совету wiki https://wiki.qt.io/MacOS_application_without_menu_bar, добавил в Info.plist
Код: <key>LSUIElement</key> Название: Re: Как спрятать окно от Mission Control (macOS) Отправлено: kambala от Январь 15, 2017, 16:38 я видел приложения, которые могут менять видимость иконки в доке и в менюбаре в рантайме — должна быть возможность реализовать это через нативный код.
|