60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
#pragma once
|
|
#include <QColor>
|
|
#include <QDebug>
|
|
#include <QLinearGradient>
|
|
#include <QList>
|
|
#include <QMap>
|
|
#include <QPixmap>
|
|
#include <QString>
|
|
#include <QWidget>
|
|
enum RectType { R11, R12, R13, R21, R22, R23, R31, R32, R33, null, Drag_R};
|
|
using changeSize = std::function<void()>;
|
|
class FrameLessWidget : public QWidget {
|
|
public:
|
|
explicit FrameLessWidget(QWidget* parent = nullptr);
|
|
int topMargin;
|
|
int bottomMargin;
|
|
int rightMargin;
|
|
int leftMargin;
|
|
int space;
|
|
QRect r11, r12, r13, r21, r22, r23, r31, r32, r33;
|
|
int x1{}, x2{}, x3{}, y1{}, y2{}, y3{};
|
|
|
|
bool changingSize = false;
|
|
bool drag_moving = false;
|
|
RectType curR = null;
|
|
int startX{};
|
|
int startY{};
|
|
int startGlobalX{};
|
|
int startGlobalY{};
|
|
int startW{};
|
|
int startH{};
|
|
|
|
int dx{}, dy{};
|
|
QList<Qt::CursorShape> shapes;
|
|
QList<changeSize> changeSizes;
|
|
int radius;
|
|
QColor background_color = QColor(150, 150, 150, 130);
|
|
virtual int getMinWidth();
|
|
virtual int getMinHeight();
|
|
void setPos();
|
|
void setRs();
|
|
|
|
[[nodiscard]] RectType getRectType(const QPoint& pos) const;
|
|
// window->showFullScreen();
|
|
// window->showNormal();
|
|
// window->showMinimized();
|
|
// window->showMaximized();
|
|
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent* event) override;
|
|
void mousePressEvent(QMouseEvent* event) override;
|
|
void mouseReleaseEvent(QMouseEvent* event) override;
|
|
bool event(QEvent* event) override;
|
|
void resizeEvent(QResizeEvent* event) override;
|
|
void mouseMoveEvent(QMouseEvent* event) override;
|
|
void showEvent(QShowEvent* event) override;
|
|
};
|
|
|