Проблема с «пустым экраном» при запуске приложения Qt в полноэкранном режиме - PullRequest
0 голосов
/ 25 марта 2020

У нас есть браузерное приложение на основе Qt, которое использует QWebEninge под капотом. В настоящее время мы боремся с проблемой, когда экран на мгновение гаснет каждый раз, когда окно получает или теряет фокус (например, каждый раз, когда вызывается QVirtualKeyboard). Следуя рекомендации Qt , мы попытались реализовать QWindowsWindowFunctions::setHasBorderInFullScreen до вызова QMainWindow::showFullScreen(). Но это приводит к недопустимому уменьшению доступной области окна, например, 1918x1078 вместо 1920x1080 (это исправление добавляет WS_BORDER к флажкам окна).

Во время некоторых экспериментов, если выясняется, что проблема также - и только - возникает , если я использую QMainWindow::show() при настройке размера окна таким образом, чтобы он точно соответствовал разрешению экрана. Другими словами: выход за пределы экрана не проблема. Поэтому моя идея заключалась в том, чтобы получить такое WS_BORDER вокруг моего QMainWinow и изменить его размер / разместить таким образом, чтобы доступная область охватывала экран.

Мои вопросы:

  • Есть ли лучшее решение, чтобы избавиться от этого?
  • Если нет: как я могу получить WS_BORDER для "нормального" QMainWinodw? Я пытался использовать Get/SetWindowLongPtr(QMainWindow::winId(), GWL_STYLE/GWL_EXSTYLE) как до, так и после вызова QMainWinodw::show(), но это не помогло.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 марта 2020

В качестве обходного пути я попытался разместить скрытое (непрозрачное) мини-окно (0x0px), используя Qt :: WindowStaysOnTopHint - это сработало. Если кто-нибудь знает лучшее решение, пожалуйста, сообщите нам. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...