Qt:;“正常”;切换到最大化状态然后切换到全屏时窗口大小丢失
我有一个Qt应用程序,它可以显示“正常”(一个既不最大化也不最小化的正常窗口)、最大化或全屏。我通过调用函数Qt:;“正常”;切换到最大化状态然后切换到全屏时窗口大小丢失,qt,window,size,fullscreen,Qt,Window,Size,Fullscreen,我有一个Qt应用程序,它可以显示“正常”(一个既不最大化也不最小化的正常窗口)、最大化或全屏。我通过调用函数QWidget::showNormal(),QWidget::showMaximized()和QWidget::showFullscreen()来实现这一点 首先让我解释一下什么是有效的: 从正常到最大化和反向工作。Qt记住正常窗口的窗口大小和位置,然后在退出最大化状态时恢复 从普通屏幕到全屏屏幕,再回到工作状态。在这里,正常窗口的大小和位置也保持不变 什么不起作用 当从正常到最大化,再到
QWidget::showNormal()
,QWidget::showMaximized()
和QWidget::showFullscreen()
来实现这一点
首先让我解释一下什么是有效的:
QWidget::saveGeometry()
保存窗口的最后一个大小,或者仅保存通过QWidget::size()
获得的大小,但总是会出现行为异常的情况。除此之外,再次全屏播放的最后一步对我来说就像一个bug
你觉得怎么样
更新:
如果在最后一步(再次全屏显示)之前手动调整窗口大小(任意大小),则全屏显示不会出现问题。当窗口最大化并全屏显示时,尝试在showFullScreen()之前执行showNormal()
当进入全屏时
if (wasMaximized = isMaximized())
{
setVisible(false); // prevents window animation on showNormal() call
showNormal();
setVisible(true);
}
showFullScreen();
if (isFullScreen())
{
if (wasMaximized)
showMaximized();
else
showNormal();
}
从全屏返回时
if (wasMaximized = isMaximized())
{
setVisible(false); // prevents window animation on showNormal() call
showNormal();
setVisible(true);
}
showFullScreen();
if (isFullScreen())
{
if (wasMaximized)
showMaximized();
else
showNormal();
}
新的Qt 5.6版本显然修复了这个错误。您可以添加您正在使用的Qt版本吗?这很重要,以防它可能是一个bug。这是最新的5.5.1。这是一个解决方法,但它不是很好。即使使用setVisible
也会有一段时间屏幕呈白色。我只是希望他们能修复这个bug…(也许我会尝试新的5.6版本)5.6版本显然真的解决了这个问题。