-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmathbutton.cpp
50 lines (43 loc) · 997 Bytes
/
mathbutton.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "mathbutton.h"
#include <QtScript/QScriptEngine>
MathButton::MathButton(const QString &text, QWidget *parent):
QPushButton(text, parent)
{
}
void MathButton::setCoefficient(float coeff)
{
_formula.clear();
_coeff = coeff;
setBorder();
}
void MathButton::setFormula(const QString &formula)
{
_coeff = 1.0;
_formula = formula;
setBorder();
}
float MathButton::calc(float data)
{
float val = 0.0;
if (_formula.isEmpty()) {
val = _coeff * data;
}
else {
QString expression_string(QString(_formula).arg(data));
QScriptEngine expression;
val = expression.evaluate(expression_string).toNumber();
}
return val;
}
void MathButton::setBorder()
{
QColor color(Qt::darkCyan);
setStyleSheet(QString("border:3px solid rgb(%1, %2, %3);").arg(color.red()).arg(color.green()).arg(color.blue()));
}
void MathButton::resetExpr()
{
_coeff = 1.0;
_formula.clear();
setStyleSheet("");
return;
}