Win8,win10都出来了,为了迎合系统的扁平化风格,项目要求窗体是无边框,看了一下QT的主要Widget,没有现成的,好吧,那就只有自己写了。
在网上也看到了一些代码,进行小结了一下,无边框窗体大小的改变,移动都需要自己处理,不在像有边框的窗体一样自动处理,处理起来目前有两种方法:
一、完全自己处理窗体的鼠标事件;
二、接收鼠标事件,连接到系统消息,由系统来处理;
先介绍第一种方法:
1.首先大家要了解各九宫格的概念
一个窗体可以被划分为上、下、左、右、左上、左下、右上、右下、中间,除了中间部分,其他都需要写程序处理。Padding其实就是鼠标放上去后需要改变鼠标的手势为改变大小形状。
在程序中定义Padding 为2,可定义枚举类型。
2.定义一个方法,参数为鼠标目前的全局位置。目的是获取窗体在屏幕上的位置区域
3.在对话框类中定义几个私有成员变量
boolisLeftPressDown; // 判断左键是否按下
QPoint dragPosition; // 窗口移动拖动时需要记住的点
Direction dir; // 窗口大小改变时,记录改变方向
在窗体的构造函数中初始化变量,并设置窗体为无边框窗体:
isLeftPressDown = false;