
基于Qt的无边框窗体实现
Qt虽然提供了诸如 Qt::FramelessWindowHint 之类的属性可以移除窗体的边框,但是移除边框之后,窗体的一些默认行为同时也被移除了,如鼠标拖动改变大小、双击标题栏最大化等,这些行为需要开发者自己来实现。 本文主要介绍实现无边框窗体的几种方案,并在最后分享了作者实现的方案。 笔者认为,一个完美的无边框窗体解决方案需要支持如下功能: 支持通过使用鼠标拖拽来改变窗体位置和大小; 支持双击标题栏最大化窗体和还原窗体; 支持 Windows Areo Snap 特性; 支持系统阴影; 支持跨不同 DPI 的屏幕拖拽; 适应分辨率和 DPI 改变;