• 基于Qt的简单计算器


    界面:

    UI


    ui由qtdesign中托控件形成。

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <vector>
    #include <QWidget>
    #include"myoperator.h"
    
    namespace Ui {
    class Widget;
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    
        enum NumberFlag   {first_flag,second_flag};//表示第一个数字还是第二个数字
        enum OperatorFlag {addition,subtraction,multiplication,division,none};//表示哪种操作
        enum DotFlag      {is_dot,not_dot};//表示是否有小数点
    
        void   clearpad();    // ac键
        void   get_number();  // 数字按键
        void   get_operator();// 操作键
        double get_result();  // =键
        void   set_zf();      // +/-键
        void   set_dot();     // .键 小数点按键
    
        void show_operator(int op);
    
    private:
        Ui::Widget *ui;
    
        int number_flag;
        int operator_flag;
        int dot_flag;
        double dot_step;//0.1
    
        double first;//第一个数的值
        double second;
    
        double result;//计算结果
        std::vector<MyOperator*> my_operaor;  //存放计算方法的数组,(命令模式)
    };
    
    #endif // WIDGET_H
    
    
    #ifndef MYOPERATOR_H
    #define MYOPERATOR_H
    
    // 抽象类,接口
    class MyOperator
    {
    public:
        MyOperator();
        ~MyOperator();
        virtual double compute(double x,double y)=0;
        //virtual double compute(double x);
    };
    
    // 抽象类的实现
    class Add:public MyOperator
    {
    public:
        double compute(double x,double y){return x+y;}
    };
    
    class Sub:public MyOperator
    {
        double compute(double x,double y){return x-y;}
    };
    
    class Mul:public MyOperator
    {
        double compute(double x,double y){return x*y;}
    };
    
    class Div:public MyOperator
    {
        double compute(double x,double y){return x/y;}
    };
    
    #endif // MYOPERATOR_H
    
    
  • 相关阅读:
    python基础26——派生&多态&绑定与非绑定方法
    python基础25——继承&属性查找&多继承的菱形问题&Mixins机制
    emmm......就当练习了系列20
    python基础24——封装&property
    emmm......就当练习了系列19
    python基础23——面向对象
    [转]N年Python老司机,血泪总结新手常见10大错误
    ATM机+购物车
    python基础22——logging模块&
    emmm......就当练习了系列18
  • 原文地址:https://www.cnblogs.com/iois/p/4533471.html
Copyright © 2020-2023  润新知