上一节实现的简单的无边框窗口,仅用于练习事件。
1. 效果演示
本节仅演示我实现的一个非常完善的无边框窗口,它支持以下特性:
✅ 支持鼠标拖拽4个边框和4个角,来缩放窗体
✅ 支持鼠标拖动标题栏,来移动窗体
✅ 支持双击标题栏,来实现窗口最大化和恢复
✅ 最大化状态下,拖动标题栏恢复原始大小
整体效果如下:
2. 为什么要自己实现?
之所以要自己定制无边框窗口,是因为QT自带的标题栏很丑,无法定制。
所以实际项目中的做法是:去除QT自带的标题栏,然后自己实现一个带有自定义标题栏的无边框窗口
通常有两种做法:
方法一:
通过重载nativeEvent函数拦截Windows系统消息(如WM_NCHITTEST)来实现
这种方法需要了解Windows系统消息,并且是针对Windows系统的,对跨平台显然无法支持方法二:
纯QT实现
这种方式通过处理QT中的一些事件,比如鼠标事件mouseMoveEvent、mousePressEvent、mouseReleaseEvent等
通过重载相应的事件处理函数,实现窗口的拉伸缩放、窗口移动等
这种方法是纯QT代码实现,支持跨平台
说明:网上能查到的各种实现,各种小BUG,包括但不限于:
(1)缩放窗口时,把窗口 “推走”;
(2)最大化状态变为最小化后,再次恢复不是最大化状态
(3)点击标题栏后,右上角的按钮失去 “活性”
(4)在我实现的无边框窗口中,这些问题都一一解决了!
另附:无边框窗口_效果地址:
链接:https://pan.baidu.com/s/1_3FwQ5B4Uop-PwUXqQmFcA?pwd=qtui
提取码:qtui
3. 跟着明王学习
关于无边框窗口源码的获取:会在《Qt/UI美化实战课程》中详细讲解
会从零开始、从零新建项目实现一个完善的无边框窗口,可以直接应用到商业项目中
当然,《Qt/UI美化实战课程》包括的干货非常多,不止UI美化。同样的讲课风格、详尽的课程笔记、规范的代码风格
- 第一章:无边框窗口_11讲(窗口缩放/恢复/拖动/纯Qt实现/跨平台)
- 第二章:图标字体_11讲(千万个精美图标/任意大小/任意颜色/封装模块/开箱即用)
- 第三章:天气预报项目UI_12讲(纯代码+拖放控件,两种方式实现布局)
- 第四章:语法高亮_15讲(代码高亮/JSON高亮/下位机数据温湿度高亮)
- 第五章:仪表盘_24讲(美观/高度定制/自适应大小)
- 第六章:官方图表QChart_21讲(曲线图/柱状图/饼图)
- 第七章:图表QCustomPlot_27讲(曲线图/柱状图/高效绘图)
- 第八章:MVC框架_即将录制(模型/视图/委托)
- 第九章:基础控件、对话框_即将录制
- 第十章:精美换肤_即将录制
明王出品,必属精品。需要系统跟明王学习的小伙伴,可以直接加明王微信:coding4096






