QT项目:计算器

源代码目录源代码目录

expr.ui窗口设计
在这里插入图片描述
expr.h

#ifndef EXPR_H
#define EXPR_H

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

namespace Ui {
class expr;
}

class expr : public QDialog
{
    Q_OBJECT

public:
    explicit expr(QWidget *parent = 0);
    ~expr();
private slots:
    void getBtn0();
    void getBtn1();
    void getBtn2();

    void on_btn_3_clicked();

    void on_btn_4_clicked();

    void on_btn_5_clicked();

    void on_btn_6_clicked();

    void on_btn_7_clicked();

    void on_btn_8_clicked();

    void on_btn_9_clicked();

    void on_btn_plus_clicked();

    void on_btn_sub_clicked();

    void on_btn_mul_clicked();

    void on_btn_div_clicked();

    void on_btn_equal_clicked();

    void on_btn_clear_clicked();

private:
    QString tmp;
    Ui::expr *ui;
    model * mode;
};

#endif // EXPR_H

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);
    QString doExpr();
private:
    int num1;
    int num2;
    QString flag;

};

#endif // MODEL_H

expr.cpp

#include "expr.h"
#include "ui_expr.h"

expr::expr(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::expr)
{
    ui->setupUi(this);
    connect(this->ui->btn_0,SIGNAL(clicked(bool)),this,SLOT(getBtn0()));
    connect(this->ui->btn_1,SIGNAL(clicked(bool)),this,SLOT(getBtn1()));
    connect(this->ui->btn_2,SIGNAL(clicked(bool)),this,SLOT(getBtn2()));
    this->mode=new model;
    this->tmp="";
}

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

void expr::getBtn0(){
    if(this->tmp !=""){
        this->tmp+=this->ui->btn_0->text();
        this->ui->lbl_display->setText(this->tmp);
    }
}

void expr::getBtn1(){
    this->tmp+=this->ui->btn_1->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::getBtn2(){
    this->tmp+=this->ui->btn_2->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_3_clicked()
{
    this->tmp+=this->ui->btn_3->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_4_clicked()
{
    this->tmp+=this->ui->btn_4->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_5_clicked()
{
    this->tmp+=this->ui->btn_5->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_6_clicked()
{
    this->tmp+=this->ui->btn_6->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_7_clicked()
{
    this->tmp+=this->ui->btn_7->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_8_clicked()
{
    this->tmp+=this->ui->btn_8->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_9_clicked()
{
    this->tmp+=this->ui->btn_9->text();
    this->ui->lbl_display->setText(this->tmp);
}

void expr::on_btn_plus_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum1(num);
    this->tmp="";
    QString ex=this->ui->btn_plus->text();
    this->mode->setFlag(ex);
}

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

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

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

void expr::on_btn_equal_clicked()
{
    int num=this->tmp.toInt();
    this->mode->setNum2(num);
    QString res = this->mode->doExpr();
    this->ui->lbl_display->setText(res);
    this->tmp="";
}

void expr::on_btn_clear_clicked()
{
    this->tmp="";
    this->ui->lbl_display->setText("0");
}

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::doExpr(){
    int result=0;
   if(this->flag=="+"){
        result=num1+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;
   }else{
        //num1->QString
        return QString::number(this->num1);
   }
    //return->QString
    return QString::number(result);
}

main.cpp

#include "expr.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    expr w;
    w.show();

    return a.exec();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值