diff --git a/calculator.h b/calculator.h new file mode 100644 index 0000000000000000000000000000000000000000..10f3fe2f7823ea8dbbf587555f11af37d6a23102 --- /dev/null +++ b/calculator.h @@ -0,0 +1,59 @@ +#ifndef CALCULATOR_H +#define CALCULATOR_H + +#include +#include +#include +class QLCDNumber; +class QPushButton; +class QGridLayout; +class QRadioButton; +class QHBoxLayout; + +class Calculator : public QWidget +{ + Q_OBJECT + +public: + Calculator(QWidget *parent = nullptr); + ~Calculator(); + void calc(); + +private: + void createOrdinaryCalculatorWidget(); + void createSciExtrCalculatorWidget(); + + QLCDNumber* f_lcdNum; + QRadioButton* f_radioBtnCasual; + QRadioButton* f_radioBtnSci; + + QStack f_operStack; + QString f_currentNum; + bool f_if_currNumChangable; + + QPushButton* ce; + QGridLayout* f_BtnLayoutCasual; + QGridLayout* f_BtnLayoutSciExtr; + QWidget* f_BtnLayoutSciExtrWidget; + QWidget* f_BtnLayoutCasualExtrWidget; + + QHBoxLayout* f_HBoxBtnLayout; + + QGridLayout* MainLayout; + + + const double PI = 3.1415926535; + const QVector NumND = {"e", "pi"}; + const QVector UnOp = {"rev", "sqr", "sqrt", "-x", "sin", "cos", "tan", "tanh", "sinh", "cosh", "ln", "exp", "n!", "cubic root", "cubic sqr"}; + const QVector OpToCountimmediately = {"log", "ysqr", "ysqrt"}; + const QVector SumOp = {"+", "-"}; + + QPushButton* createButton(const QString &p_str, size_t p_horz, size_t p_vert); + +public slots: + void slotButtonClicked(); + void slotHideSci(bool); + void slotShowSci(bool); + +}; +#endif // CALCULATOR_H