我有一个Qt应用程序可以显示为“正常”(既不是最大化也不是最小化的正常窗口),最大化或全屏。我通过调用函数QWidget::showNormal()
,QWidget::showMaximized()
和QWidget::showFullscreen()
来实现这一目标。
首先让我解释一下有什么作用:
什么不起作用?
从正常到最大化,然后到全屏,返回到最大化,然后恢复到正常,不能按预期工作。在最大化之前,窗口不会调整为原来的大小。相反,窗口将与屏幕一样大(基本上与OS允许窗口一样大)。
如果我现在再次进入全屏,那么在右上角和底部边缘会出现奇怪的瑕疵,看起来看起来像是旧视觉效果禁用的旧Vista窗口框架的一部分。
这是一张图片,应该说明我刚刚解释的过程:
我尝试使用QWidget::saveGeometry()
保存窗口的最后一个大小,或者只是在窗口状态更改事件发生时保存QWidget::size()
获得的大小,但总是出现奇怪的行为。除此之外,再次全屏播放的最后一步看起来像是一个错误。
您怎么看?
更新:
如果我在最后一步(再次进入全屏幕)之前手动调整窗口大小(任意大小),则全屏工作没有问题。
答案 0 :(得分:2)
在窗口最大化并进入全屏时,尝试在showNormal()
之前执行showFullScreen()
。
进入全屏时
if (wasMaximized = isMaximized())
{
setVisible(false); // prevents window animation on showNormal() call
showNormal();
setVisible(true);
}
showFullScreen();
从全屏返回时
if (isFullScreen())
{
if (wasMaximized)
showMaximized();
else
showNormal();
}
答案 1 :(得分:0)
新的Qt 5.6版本明显修复了这个错误。