基于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

posted @ 2015-05-27 14:59  clq.lib  阅读(506)  评论(0编辑  收藏  举报