Files
Renderive/YSGraphic_Core/component/Base/Base.h
T
2026-06-16 13:33:27 +08:00

68 lines
1.8 KiB
C++

#pragma once
#include <QPainter>
#include <QPaintEvent>
namespace Psc {
enum class Direction {
First,
Middle,
Last,
Default
};
class Layout_Item {
public:
enum Size_Policy {
Get_Main_By_Cross = 1,
Cross_Expand = 2,
Grow = 4,
Shrink = 8,
Ignore = 16
};
Direction direction = Direction::Default;
QFlags<Size_Policy> size_policy;
bool use_get_main_by_cros = false;
virtual int get_main_by_cros(int cros) {
return cros;
}
virtual ~Layout_Item() = default;
[[nodiscard]] int x() const { return _x;}
[[nodiscard]] int y() const { return _y;}
[[nodiscard]] int w() const { return _w;}
[[nodiscard]] int h() const { return _h;}
void set_x(int x) {_x = x;}
void set_y(int y) {_y = y;}
void set_w(int w) {_w = w;}
void set_h(int h) {_h = h;}
void set_size(int w, int h) {_w = w; _h = h;}
void set_size(QSize size) {_w = size.width(); _h = size.height();}
virtual QSize sizeHint() const {
return QSize(_w, _h);
}
virtual QSize minimumSize() const {
return QSize(_w, _h);
}
virtual QSize maximumSize() const {
return QSize(_w, _h);
}
[[nodiscard]] QRect rect() const {
return {_x, _y, _w, _h};
}
protected:
int _x = 0, _y = 0, _w = 0, _h = 0;
};
class E : public Layout_Item {
public:
virtual ~E() = default;
virtual void paint(QPainter *painter, QRect r, QPaintEvent *event){}
virtual void event(QEvent::Type t, QEvent* e) {}
void update() {
need_update = true;
}
bool need_update = false;
};
}