QT_Caculator_Version0

前言:本程序是在学习网易云课堂上嵌讲师吴健老师的课程之后依照视频内容编写的,与视频原程序有细微出入。本工程以此为基础,不断改进,后期会发布功能更强的Caculator版本的源代码以及分析。

设计样式(UI可视化方法设计):

设计源代码:

1. main.cpp:

2. calulator.cpp:

#include "calulator.h"
#include "ui_calulator.h"
Calulator::Calulator(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Calulator)
{
    ui->setupUi(this);
    connect(this->ui->btn0,SIGNAL(clicked(bool)),this,SLOT(getBtn0()));
    connect(this->ui->btn1,SIGNAL(clicked(bool)),this,SLOT(getBtn1()));
    connect(this->ui->btn2,SIGNAL(clicked(bool)),this,SLOT(getBtn2()));
    this->mode=new model;
    this->tmp="";
    this->initial_value="0";
}

Calulator::~Calulator()
{
    delete ui;
}

void Calulator::getBtn0()
{
    //non bool value-> get the value is the name, set
    if(this->tmp!=""){
    this->tmp+=this->ui->btn0->text();
    this->ui->label_display->setText(this->tmp);
    }
}
void Calulator::getBtn1()
{
     this->tmp+=this->ui->btn1->text();
     this->ui->label_display->setText(this->tmp);

}
void Calulator::getBtn2()
{
     this->tmp+=this->ui->btn2->text();
    this->ui->label_display->setText(this->tmp);
}
//using UI method
void Calulator::on_btn3_clicked()
{
    this->tmp+=this->ui->btn3->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn4_clicked()
{
    this->tmp+=this->ui->btn4->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn5_clicked()
{
    this->tmp+=this->ui->btn5->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn6_clicked()
{
    this->tmp+=this->ui->btn6->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn7_clicked()
{
    this->tmp+=this->ui->btn7->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn8_clicked()
{
    this->tmp+=this->ui->btn8->text();
    this->ui->label_display->setText(this->tmp);
}

void Calulator::on_btn9_clicked()
{
    this->tmp+=this->ui->btn9->text();
    this->ui->label_display->setText(this->tmp);
}
//+
void Calulator::on_btn_plus_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum1(num);
    this->tmp="";
    QString symbol=this->ui->btn_plus->text();
    this->mode->SetFlag(symbol);
}

void Calulator::on_btn_sub_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum1(num);
    this->tmp="";
    QString symbol=this->ui->btn_sub->text();
    this->mode->SetFlag(symbol);
}

void Calulator::on_btn_mul_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum1(num);
    this->tmp="";
    QString symbol=this->ui->btn_mul->text();
    this->mode->SetFlag(symbol);
}

void Calulator::on_btn_div_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum1(num);
    this->tmp="";
    QString symbol=this->ui->btn_div->text();
    this->mode->SetFlag(symbol);
}

void Calulator::on_btn_equ_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum2(num);
    QString result=this->mode->Start_Cal();
    this->ui->label_display->setText(result);
    //this->tmp="";
}

void Calulator::on_btn_clc_clicked()
{
    this->tmp="";
    this->ui->label_display->setText("0");
}

3. model.cpp:

#include "model.h"

model::model()
{
    this->num1=0;
    this->num2=0;
}

void model::setNum1(int num){
    this->num1=num;
}
void model::setNum2(int num){
    this->num2=num;
}
void model::SetFlag(QString flag){
    this->flag=flag;
}
QString model::Start_Cal(){
    int result=0;

    if     (this->flag=="+") {    result=this->num1+this->num2;  }
    else if(this->flag=="-") {    result=this->num1-this->num2;  }
    else if(this->flag=="*") {    result=this->num1*this->num2;  }
    else if(this->flag=="/") {
        if(this->num2==0)
            return "ERROR";
        result=this->num1/this->num2;//the divider !=0
    }
    else return QString::number(this->num1);

    return QString::number(result);
}

4.calculator.h

#ifndef CALULATOR_H
#define CALULATOR_H

#include <QDialog>
#include <QString>
#include "model.h"

namespace Ui {
class Calulator;
}

class Calulator : public QDialog
{
    Q_OBJECT

public:
    explicit Calulator(QWidget *parent = 0);
    ~Calulator();

private slots:
    //Attention:According to the video, the Button0,1,2 was connected manually.
    //The others were connected automatically by the SLOT.(Refer to the Video)
    //-------------------------------------------------------------
    void getBtn0();
    void getBtn1();
    void getBtn2();
    //-------------------------------------------------------------
    void on_btn3_clicked();
    void on_btn4_clicked();
    void on_btn5_clicked();
    void on_btn6_clicked();
    void on_btn7_clicked();
    void on_btn8_clicked();
    void on_btn9_clicked();
    void on_btn_plus_clicked();
    void on_btn_sub_clicked();
    void on_btn_mul_clicked();
    void on_btn_div_clicked();
    void on_btn_equ_clicked();
    void on_btn_clc_clicked();
private:
    QString tmp;
    QString initial_value;
    Ui::Calulator *ui;
    model *mode;
};

#endif // CALULATOR_H

5. model.h:

#ifndef MODEL_H
#define MODEL_H
#include <QString>

class model
{
public:
    model();
    void setNum1(int num);
    void setNum2(int num);
    void SetFlag(QString flag);
    QString Start_Cal();
private:
    int num1;
    int num2;
    QString flag;
};

#endif // MODEL_H

设计成果:

预改进项:

1.对于小数的计算;

2.对于幂,sin, tan, cos等的运算;

3.连续计算;

4.进制转换;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值