zoukankan      html  css  js  c++  java
  • 基于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
    
    
  • 相关阅读:
    Android UI中英文自动显示问题
    HTTP通信过程原理
    [转] Protobuf高效结构化数据存储格式
    常用json解析库比较及选择 fastjson & gson
    [转]深入Android内存泄露
    [转]Android 如何有效的解决内存泄漏的问题
    Android View 滚动边界的测量
    Oracle查看表之间的约束
    LINUX学习笔记——LINUX下EXP命令全库备份数据库文件
    LINUX档案权限
  • 原文地址:https://www.cnblogs.com/iois/p/4533471.html
Copyright © 2011-2022 走看看