查看完整版本: [-- Qt编写自定义控件67-通用无边框 --]

QTCN开发网 -> Qt 作品展 -> Qt编写自定义控件67-通用无边框 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

liudianwu 2019-10-12 09:20

Qt编写自定义控件67-通用无边框

一、前言
在之前的一篇文章中写过一个通用的移动控件,作用就是用来传入任意的widget控件,可以在父类容器中自由移动。本篇文章要写的是一个通用的无边框类,确切的说这不叫控件应该叫组件才对,控件是要看得见的东西,有绘制需求的,而这个需要依附在控件上。在我们平时做的项目中,为了U界面的美观,很多会采用自定义无边框窗体来处理,自己美化标题栏等,都会面临一个相同的问题,就是设置好自定义无边框窗体以后,要自己处理窗体的移动和拉伸,如果有多个无边框窗体,很多人会想到每个地方都写重复的代码来实现移动或者拉伸,何不封装一个类来完成这个功能呢,直接传入窗体即可。在QDialog窗体中可以通过设置一个属性sizeGripEnabled来实现右下角的拉伸,这个还不足以满足所有的需求,很多时候我们还需要在四个角和上下左右都能拉伸大小,这个就需要重写了,安装事件过滤器,识别到鼠标移动到某个区域,鼠标形状自动变化,然后识别是否已经按下,按下的话做对应的处理,对应的处理核心就是重新设置窗体的XY轴坐标和大小。

开源地址:[https://gitee.com/feiyangqingyun/QWidgetDemo](https://gitee.com/feiyangqingyun/QWidgetDemo)  [https://github.com/feiyangqingyun/QWidgetDemo](https://github.com/feiyangqingyun/QWidgetDemo)

二、实现的功能
* 1:可以指定需要无边框的widget
* 2:边框四周八个方位都可以自由拉伸
* 3:可设置对应位置的边距,以便识别更大区域
* 4:可设置是否允许拖动
* 5:可设置是否允许拉伸

三、效果图


雨田小老弟 2019-10-12 09:55
提供代码的反手一个赞,,不提供代码的就是批评这个点赞

boylebao 2019-10-12 10:21

smileli 2019-10-12 14:49
给大佬1024个攒!


查看完整版本: [-- Qt编写自定义控件67-通用无边框 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled