qt/Compass/layer.h
2025-05-06 18:28:05 +08:00

69 lines
2.3 KiB
C++

#ifndef LAYER_H
#define LAYER_H
#include "main.h"
#define HandleSize 10
class OutputView;
class Layer : public QWidget {
Q_OBJECT
public:
explicit Layer(int idx, const QString &name, QWidget *parent = 0) : QWidget(parent), idx(idx), name(name) {}
inline void updateGeo() {
setGeometry(QRect(sPos*gScale+gOrigin, sSize*gScale));
}
void select();
QPoint sPos;
QSize sSize{1920, 1080};
int idx = 1, rowIdx = 0;
QString name;
TreeWidgetItem *item = 0;
OutputView *view = 0;
protected:
void paintEvent(QPaintEvent *) override;
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void leaveEvent(QEvent *) override;
void resizeEvent(QResizeEvent *event) override {
hdlT = QRectF(width()/2 - HandleSize/2, -HandleSize/2, HandleSize, HandleSize);
hdlRT = QRectF(width() - HandleSize/2, - HandleSize/2, HandleSize, HandleSize);
hdlL = QRectF(-HandleSize/2, height()/2 - HandleSize/2, HandleSize, HandleSize);
hdlR = QRectF(width() - HandleSize/2, height()/2 - HandleSize/2, HandleSize, HandleSize);
hdlLB = QRectF(-HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
hdlB = QRectF(width()/2 - HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
hdlRB = QRectF(width() - HandleSize/2, height() - HandleSize/2, HandleSize, HandleSize);
}
void setFrmSec(const QPointF &);
void setFrmSecIfNeed(Qt::WindowFrameSection frmSec, Qt::CursorShape cursor);
void clearSnap();
QRectF hdlLT = QRectF(-HandleSize/2, -HandleSize/2, HandleSize, HandleSize), hdlT, hdlRT, hdlL, hdlR, hdlLB, hdlB, hdlRB;
QPointF mPressRel{FLT_MAX, FLT_MAX};
Qt::WindowFrameSection mFrmSec = Qt::NoSection;
char snapLR = 0, snapTB = 0;
};
class OutputView : public QGraphicsView {
Q_OBJECT
public:
explicit OutputView(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void leaveEvent(QEvent *) override;
void clearSnap();
QPointF mPressRel{FLT_MAX, FLT_MAX};
char snapLR = 0, snapTB = 0;
};
#endif // LAYER_H