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 <= 0top-right >= SCREEN_WIDTH 时,您将手动重新调整窗口大小。当然,您需要在所有这些之前获得屏幕尺寸并计算一半等等。

不用说,在半最大化状态下,你需要监听并检查窗口是否被移动以恢复其之前的尺寸。

我真的相信没有简单的方法可以实现这一点,除非你使用winapi。好吧,在winapi 的情况下,人们可以反对琐碎,我不能否认。

如果您最终想出更简单的解决方案,请告诉我们。

【讨论】:

以上是关于QT FramelessWindowHint Windows 7 停靠在一边的主要内容,如果未能解决你的问题,请参考以下文章

Windows平台FramelessWindowHint窗口,点击底部任务栏隐藏

关于 Q3DScatter嵌套进设置了Qt::FramelessWindowHint(触摸自定义标题栏)时进行演示时出现渲染黑色区域 的解决方法

QT无标题窗口在任务栏显示关闭(增加系统菜单)

QT窗口无边框最前

QT 实用代码片段

QT主窗体半透明实现