总第49篇
在我们的项目开发过程中,为了界面的美观,经常会自定义标题栏、自定义无边框窗体等,这些都会面临一个问题,那就是在定义无边框窗体后,要自己处理窗体的移动、拉伸。若在项目中有多处应用无边框窗体,就有必要将其写成一个类并封装成一个库了。
本文梳理了无边框窗体的实现,将其写成一个通用的类,方便在项目的其它地方调用,也方便以后的开发中直接应用,供大家参考和借鉴使用。
此类实现的功能包括:
- 可以指定需要无边框的
widget
- 边框的四周八个方向都可以自由拉伸
- 可设置对应位置的边距,以便扩大识别区域
- 可设置是否允许拉伸
- 可设置是否允许拖动
其实现效果如下图所示:
不多说,直接上代码。下面是头文件,定义了相关的变量和一些接口函数。
class FramelessWidget : public QObject
{
Q_OBJECT
public:
explicit FramelessWidget(QObject *parent = 0);
protected:
bool eventFilter(QO