QT FramelessWindowHint Windows 7 停靠在一边
Posted
技术标签:
【中文标题】QT FramelessWindowHint Windows 7 停靠在一边【英文标题】:QT FramelessWindowHint Windows 7 dock to side 【发布时间】:2012-12-17 22:43:47 【问题描述】:我用“Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint” windowFlags 制作了一个 QWidget。
我重新实现了所有鼠标事件,以便能够移动/调整窗口大小。
我想做的最后一件事是能够获得与有关 Windows 7 Dock 系统的“普通窗口”相同的行为。
当我将窗口移动到屏幕的左/右/顶部附近时,使用普通窗口,它会将其大小调整为 halfWindowSize 或全屏。
知道怎么做吗?
【问题讨论】:
【参考方案1】:这太明显了,但仍然......
您需要监听move
事件,并且每当您检测到top-left <= 0
或top-right >= SCREEN_WIDTH
时,您将手动重新调整窗口大小。当然,您需要在所有这些之前获得屏幕尺寸并计算一半等等。
不用说,在半最大化状态下,你需要监听并检查窗口是否被移动以恢复其之前的尺寸。
我真的相信没有简单的方法可以实现这一点,除非你使用winapi
。好吧,在winapi
的情况下,人们可以反对琐碎,我不能否认。
如果您最终想出更简单的解决方案,请告诉我们。
【讨论】:
以上是关于QT FramelessWindowHint Windows 7 停靠在一边的主要内容,如果未能解决你的问题,请参考以下文章
Windows平台FramelessWindowHint窗口,点击底部任务栏隐藏
关于 Q3DScatter嵌套进设置了Qt::FramelessWindowHint(触摸自定义标题栏)时进行演示时出现渲染黑色区域 的解决方法