通过上一节内容,我们实现了窗体的缩放,功能很不错,但是很遗憾-不支持跨平台!如果对于多平台来说,这是一个硬伤,所以,我们急需要一个能够支持跨平台的实现方案。
在网上看到过很多不同的实现方式,多多少少会存在一些问题-要么融合度太高、要么不能很好地进行移动、缩放。基于前人的分享与总结,最后,我花了很长时间来完善。独乐乐不如众乐乐,既然纯开源-那就全部分享出来。
<a href="#%e7%ae%80%e8%bf%b0">简述</a>
<a href="#%e6%95%88%e6%9e%9c">效果</a>
<a href="#%e7%aa%97%e4%bd%93%e7%bc%a9%e6%94%be">窗体缩放</a>
<a href="#%e5%ae%9e%e7%8e%b0">实现</a>
<a href="#%e6%8e%a5%e5%8f%a3%e8%af%b4%e6%98%8e">接口说明</a>
<a href="#%e4%bd%bf%e7%94%a8%e6%96%b9%e5%bc%8f">使用方式</a>
<a href="#%e5%b9%b3%e5%8f%b0%e6%94%af%e6%8c%81">平台支持</a>

frameless_helper.h
frameless_helper.cpp
framelesshelperprivate类
cursorposcalculator类
widgetdata类
framelesshelper类
framelesshelperprivate
存储界面对应的数据集合,以及是否可移动、可缩放属性
cursorposcalculator
计算鼠标是否位于左、上、右、下、左上角、左下角、右上角、右下角
widgetdata
更新鼠标样式、移动窗体、缩放窗体
framelesshelper
激活窗体、移除窗体、设置窗体移动、窗体缩放、橡皮筋移动、橡皮筋缩放、边框的宽度、标题栏高度等
代码很多,我就不详细解答了,里面主要的接口我都添加了注释。其它接口的命名也是比较规范的-见名知义。
这里的this指的是要处理的窗体。
因为使用的是纯qt实现,所以支持跨平台!win7、win10、redhat7.0已测试通过,其它平台尚未测试,有需要的童鞋可自行实验。