Files
BloomPatched/src/Insight/UserInterfaces/InsightWindow/Widgets/RotatableLabel.hpp

93 lines
2.5 KiB
C++
Raw Normal View History

2021-08-22 20:41:52 +01:00
#pragma once
#include <QSize>
#include "Label.hpp"
namespace Widgets
2021-08-22 20:41:52 +01:00
{
class RotatableLabel: public Label
2021-08-22 20:41:52 +01:00
{
Q_OBJECT
Q_PROPERTY(int leftMargin READ getLeftMargin WRITE setLeftMargin DESIGNABLE true)
Q_PROPERTY(int rightMargin READ getRightMargin WRITE setRightMargin DESIGNABLE true)
Q_PROPERTY(int topMargin READ getTopMargin WRITE setTopMargin DESIGNABLE true)
Q_PROPERTY(int bottomMargin READ getBottomMargin WRITE setBottomMargin DESIGNABLE true)
Q_PROPERTY(int angle READ getAngle WRITE setAngle DESIGNABLE true)
2021-08-22 20:41:52 +01:00
public:
RotatableLabel(const QString& text, QWidget* parent)
: Label(text, parent)
{};
RotatableLabel(int angleDegrees, const QString& text, QWidget* parent)
: Label(text, parent)
, angle(angleDegrees)
2022-04-28 21:08:55 +01:00
{};
int getLeftMargin() {
return this->contentsMargins().left();
}
void setLeftMargin(int leftMargin) {
auto margins = this->contentsMargins();
margins.setLeft(leftMargin);
this->setContentsMargins(margins);
}
int getRightMargin() {
return this->contentsMargins().right();
}
void setRightMargin(int rightMargin) {
auto margins = this->contentsMargins();
margins.setRight(rightMargin);
this->setContentsMargins(margins);
}
int getTopMargin() {
return this->contentsMargins().top();
}
void setTopMargin(int topMargin) {
auto margins = this->contentsMargins();
margins.setTop(topMargin);
this->setContentsMargins(margins);
}
int getBottomMargin() {
return this->contentsMargins().bottom();
}
void setBottomMargin(int bottomMargin) {
auto margins = this->contentsMargins();
margins.setBottom(bottomMargin);
this->setContentsMargins(margins);
}
int getAngle() {
return this->angle;
}
void setAngle(int angleDegrees) {
this->angle = angleDegrees;
}
2021-08-22 20:41:52 +01:00
protected:
void paintEvent(QPaintEvent* event) override;
[[nodiscard]] QSize sizeHint() const override {
return this->getContainerSize();
2022-04-28 21:08:55 +01:00
}
2021-08-22 20:41:52 +01:00
[[nodiscard]] QSize minimumSizeHint() const override {
return this->getContainerSize();
2022-04-28 21:08:55 +01:00
}
2021-08-22 20:41:52 +01:00
private:
int angle = 90;
2021-08-22 20:41:52 +01:00
[[nodiscard]] QSize getContainerSize() const;
2021-08-22 20:41:52 +01:00
};
}