Sun, 09 Apr 2023 15:59:08 +0300
Extracted the state of the program into a MainState structure, and extracted local functions of main() into static functions.
I was planning to make the core logic and state of the program into a Main class, which would be a QObject that would
have lots of signals and slots, but it looks like this works even without it
#pragma once #include <QWidget> #include <glm/glm.hpp> #include <ui_vec3editor.h> class VectorInput : public QWidget { Q_OBJECT Q_PROPERTY(qreal x READ x WRITE setX) Q_PROPERTY(qreal y READ y WRITE setY) Q_PROPERTY(qreal z READ z WRITE setZ) Ui_Vec3Editor ui; public: enum Flag { NoMultiplyButton = 0x1 }; explicit VectorInput(const glm::vec3& value, QWidget* parent = nullptr, QFlags<Flag> flags = {}); explicit VectorInput(QWidget* parent = nullptr, QFlags<Flag> flags = {}); ~VectorInput(); glm::vec3 value() const; void setValue(const glm::vec3& value); qreal x() const; qreal y() const; qreal z() const; Q_SLOT void setX(qreal x); Q_SLOT void setY(qreal y); Q_SLOT void setZ(qreal z); Q_SIGNAL void valueChanged(const glm::vec3& value); private: std::array<class DoubleSpinBox*, 3> spinboxes(); Q_SLOT void multiplyPressed(); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QFlags<VectorInput::Flag>)