stdware / qwindowkit

Cross-platform frameless window framework for Qt. Support Windows, macOS, Linux.
Apache License 2.0
490 stars 78 forks source link

拖拽标题栏触发最大化,还原窗口,标题栏被遮挡 #63

Closed Ikok9c6s closed 5 months ago

Ikok9c6s commented 5 months ago

使用Example中的窗口即可复现。 win10上因为SnapLayout最大化的触发范围比win11要大一点,所以这个问题更明显。 不同软件的窗口对这个的处理似乎是不一样的:文件资源管理器偶尔会出现部分被遮挡的情况;微信在这种情况下,按钮仍然是最大化的按钮,点击没有响应;Edge浏览器效果和Example的窗口一样,标题栏大部分被遮挡。 请问能否处理下这个问题,或者提供下处理的思路呢 image

wangwenx190 commented 5 months ago

你的意思是窗口从最大化还原后,标题栏被挡住一部分?这个问题跟snap layout没关系,是Qt的bug,但你说的也没错,很多自定义边框的软件都有这个bug,包括edge。你qt什么版本?

Ikok9c6s commented 5 months ago

qt用的5.15.2,编译器是msvc2019。 你的意思是这个bug不需要处理吗?

SineStriker commented 5 months ago

qt用的5.15.2,编译器是msvc2019。 你的意思是这个bug不需要处理吗?

标题栏被遮挡,指的是窗口纵坐标变负了是吗?还是能拖回来的?

Ikok9c6s commented 5 months ago

指的是标题栏的纵坐标为负。 正常移动对话框到屏幕上端,windows会有一个回弹的效果,以使标题栏纵坐标不为负。但是经过上述操作后,尤其是点击标题栏的位置非常靠下时,标题栏在垂直方向上几乎不显示,此时无法通过移动对话框使标题栏完全显示,只能通过更改尺寸触发windows的机制

wangwenx190 commented 5 months ago

这个是很多UI框架的bug,包括Qt。你可以看看你电脑里自定义边框的软件,基本都有这个问题,比如Edge、火狐、VSCode等。这个问题跟snap layout没有一点关系。我去年就将这个问题报告给了Qt,Qt那边也已经修复了,你可以试试6.5,应该是没有这个问题了。5.15已经很久没有更新了,这种新的bug修复只能用新版本。

wangwenx190 commented 5 months ago

这个属于Qt本身的问题,而且在6.5中已经被修复,能升级Qt你就升级一下,不能的话就忽略这个问题吧,也不是什么大问题。所以这个issue我就关掉了。

Ikok9c6s commented 5 months ago

我刚使用了qt6.5.3,的确属于qt的bug,并已经修复,感谢解答