【发布时间】:2020-03-25 18:12:25
【问题描述】:
我们有一个基于 Qt 的浏览器应用程序,它在后台使用 QWebEninge。目前,我们正在解决一个问题,即每次窗口获得或失去焦点时(例如,每次调用 QVirtualKeyboard 时),屏幕都会出现片刻空白。在Qt's recommendation 之后,我们尝试在调用QMainWindow::showFullScreen() 之前实现QWindowsWindowFunctions::setHasBorderInFullScreen。但这会导致可用窗口面积的减少令人无法接受,例如1918x1078 而不是 1920x1080(此修复将 WS_BORDER 添加到窗口标志)。
在一些实验中,如果我使用QMainWindow::show() 并以与屏幕分辨率完全匹配的方式设置窗口大小时,如果发现问题也 - 并且仅 - 出现。换句话说:超出屏幕范围不是问题。因此,我的想法是在我的 QMainWinow 周围放置这样一个 WS_BORDER 并以某种方式调整/放置它,以便可用区域覆盖屏幕。
我的问题是:
- 有没有更好的解决方案来解决这个问题?
- 如果不是:我怎样才能获得“正常”
QMainWinodw的WS_BORDER?我尝试在调用QMainWinodw::show()之前和之后都使用Get/SetWindowLongPtr(QMainWindow::winId(), GWL_STYLE/GWL_EXSTYLE),但这没有帮助。
提前致谢。
【问题讨论】:
-
注意:我已经注意到图形驱动程序在这里起着重要作用。范围内的系统具有 Intel HD Graphics 5xx GPU,驱动程序是最新的。在另一台配备 Intel HD Graphics 6xx GPU 的计算机上也发生了同样的情况。将 Windows 设置中的“高级图形设置”更改为“高性能”也无济于事。
标签: windows qt fullscreen qwidget qtwebengine