简述
大家在做Qt的时候,经常都会遇到自定义QWidget吧,但一旦实现后,有变的不可以拉伸了,今天我们就来做一个可拉伸的自定义QWidget并且可以移动
实现
#ifndef AUTOSIZEWIDGET_H
#define AUTOSIZEWIDGET_H
#include "basewidget.h"
//这是mainWindow的基类,继承与QWidget,实现了可拉伸大小
enum Direction {
UP, DOWN, LEFT, RIGHT, LEFTTOP, LEFTBOTTOM, RIGHTBOTTOM, RIGHTTOP, NONE
};
class AutoSizeWidget : public QWidget
{
Q_OBJECT
public:
AutoSizeWidget(QWidget *parent=0);
~AutoSizeWidget();
protected:
void mouseMoveEvent(QMouseEvent *) override;
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
private:
void judgeRegionSetCursor(const QPoint&);
const int Padding = 2;
bool isLeftPressDown; // 判断左键是否按下
QPoint dragPosition; // 窗口移动拖动时需要记住的点
// 窗口大小改变时,记录改变方向
Direction dir;
};
#endif // AUTOSIZEWIDGET_H
cpp文件
#include "autosizewidget.h"
AutoSizeWidget::AutoSizeWidget(QWidget *parent)
: QWidget(parent)
{
isLeftPressDown =