PeriDyno 1.0.0
Loading...
Searching...
No Matches
QmDoubleSpinBox.h
Go to the documentation of this file.
1
19#pragma once
20//Qt
21#include <QGroupBox>
22#include <QPushButton>
23#include <QSpinBox>
24#include <QDialog>
25#include <QLineEdit>
26#include <QMouseEvent>
27#include <QWheelEvent>
28#include <QLabel>
29#include <QVBoxLayout>
30
31//PeriDyno
32#include "Format.h"
33#include "FCallBackFunc.h"
34#include "QtGUI/Common.h"
35
36//C++
37#include <memory>
38#include <sstream>
39
40namespace dyno
41{
42 class Node;
43 class Module;
44 class FBase;
45
46 class QDoubleSpinner;
47 class QDoubleSlider;
48 class mDoubleSpinBox;
49 class ValueDialog;
50
51
52
53 class mDoubleSpinBox : public QDoubleSpinBox
54 {
55 Q_OBJECT
56 public:
57 explicit mDoubleSpinBox(QWidget* parent = nullptr);
58
59 double getRealValue()
60 {
61 return realValue;
62 }
63 double setRealValue(double val)
64 {
65 realValue = val;
66 return realValue;
67 }
68
69 QLineEdit* getLineEdit()
70 {
71 return this->lineEdit();
72 }
73
75
76
77 private:
78 //Prohibited to use
79 void wheelEvent(QWheelEvent* event);
80
81 void mousePressEvent(QMouseEvent* event) override;
82
83 void mouseReleaseEvent(QMouseEvent* event) override;
84
85 void mouseMoveEvent(QMouseEvent* event) override;
86
87 void contextMenuEvent(QContextMenuEvent* event) override;
88
89 protected:
90
91
92 virtual QString textFromValue(double val) const override
93 {
94 auto qstr = QString::number(realValue, 10, displayDecimals);
95
96 return qstr;
97 }
98
99 virtual double valueFromText(const QString& text) const override
100 {
101 if (istoggle)
102 {
103 return realValue;
104 }
105 else
106 {
107 return text.toDouble();
108 }
109 }
110
111 public:
112
113 signals:
114
115
116 public slots:
117 void ModifyValue(double);
118 void ModifyValueAndUpdate(double);
119 void LineEditFinished(double);
120 void LineEditStart();
121
122 void toggleDecimals(bool v)
123 {
124 if (v)
126 else
128
129 istoggle = true;
130
131 auto t = QString::number(realValue, 10, displayDecimals);
132 this->lineEdit()->setText(t);
133
134 istoggle = false;
135 }
136
137 private:
138 int decimalsMin = 3;
139 int decimalsMax = 8;
141 double realValue = 0;
142 bool istoggle = false;
143 };
144
145
146 class toggleLabel : public QLabel
147 {
148 Q_OBJECT
149 public:
150
151 explicit toggleLabel(QWidget* parent = nullptr)
152 : QLabel(parent)
153 {
154
155 }
156
157 Q_SIGNALS:
158 void toggle(bool high);
159
160 protected:
161 void mousePressEvent(QMouseEvent* event) override
162 {
163 current = !current;
164 emit toggle(current);
165 }
166
167
168 private:
169
170 bool current = false;
171 };
172
173
174}
QLineEdit * getLineEdit()
double setRealValue(double val)
void mouseMoveEvent(QMouseEvent *event) override
ValueDialog * ValueModify
void contextMenuEvent(QContextMenuEvent *event) override
virtual QString textFromValue(double val) const override
void wheelEvent(QWheelEvent *event)
void ModifyValueAndUpdate(double)
mDoubleSpinBox(QWidget *parent=nullptr)
void toggleDecimals(bool v)
void LineEditFinished(double)
virtual double valueFromText(const QString &text) const override
void mousePressEvent(QMouseEvent *event) override
void mouseReleaseEvent(QMouseEvent *event) override
void mousePressEvent(QMouseEvent *event) override
void toggle(bool high)
toggleLabel(QWidget *parent=nullptr)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25