最最最简单的计算器

这两天刚开始学习Qt,今天花了一点点时间弄了个最最最简单的计算器。

请各位赐教和鼓励哈。也希望这点小东西能够帮到刚开始学习Qt的同学。

运行图片:


头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
private slots:
    void on_Btn_1_clicked();

    void on_Btn_2_clicked();

    void on_Bnt_3_clicked();

    void on_Btn_6_clicked();

    void on_Btn_4_clicked();

    void on_Btn_5_clicked();

    void on_Btn_7_clicked();

    void on_Btn_8_clicked();

    void on_Btn_9_clicked();

    void on_Btn_0_clicked();

    void on_Btn_add_clicked();

    void on_Btn_sum_clicked();

    void on_Btn_sub_clicked();

    void on_Btn_mul_clicked();

    void on_Btn_div_clicked();

private:
    Ui::Widget *ui;

protected:
    QString S;
    int mark;       //标记是第一个数字还是第二个
    int num1;
    int num2;
    int result; //结果
    QString sum;
    bool issum ;

    char fuhao;
};

#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    mark=1;     //用来表示是符号左边的数
    S="";       //用来表示lineEdit_str上显示的字符
    num1=0;
    num2=0;
    result=0;   //得数
    sum="";     //用来表示lineEdit_sum上显示的字符
    issum = false;  //判断是否求过和
    setWindowTitle(tr("计算器"));
    ui->lineEdit_str->setReadOnly(true);
    ui->lineEdit_sum->setReadOnly(true);

}

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

/*************************
  ********数字********
*************************/
void Widget::on_Btn_0_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="0";
    ui->lineEdit_str->setText(S);
    if(mark==1)        //符号左边的数
    {
        num1=num1*10+0;
    }
    else{
        num2=num2*10+0;
    }
}

void Widget::on_Btn_1_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="1";
    ui->lineEdit_str->setText(S);
    if(mark==1)        //符号左边的数
    {
        num1=num1*10+1;
    }
    else{
        num2=num2*10+1;
    }
}

void Widget::on_Btn_2_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="2";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+2;
    }
    else{
        num2=num2*10+2;
    }
}

void Widget::on_Bnt_3_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="3";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+3;
    }
    else{
        num2=num2*10+3;
    }
}

void Widget::on_Btn_4_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="4";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+4;
    }
    else{
        num2=num2*10+4;
    }
}

void Widget::on_Btn_5_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="5";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+5;
    }
    else{
        num2=num2*10+5;
    }
}

void Widget::on_Btn_6_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="6";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+6;
    }
    else{
        num2=num2*10+6;
    }
}

void Widget::on_Btn_7_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="7";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+7;
    }
    else{
        num2=num2*10+7;
    }
}

void Widget::on_Btn_8_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="8";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+8;
    }
    else{
        num2=num2*10+8;
    }
}

void Widget::on_Btn_9_clicked()
{
    if(issum)
    {
        ui->lineEdit_sum->clear();
    }
    issum = false;
    S+="9";
    ui->lineEdit_str->setText(S);
    if(mark==1)
    {
        num1=num1*10+9;
    }
    else{
        num2=num2*10+9;
    }
}

/*************************
  ********运算方法********
*************************/
void Widget::on_Btn_add_clicked()
{
    if(issum)
    {
        S=sum+"+";
        num1 = result;
    }
    else{
        S+="+";
    }

    ui->lineEdit_str->setText(S);
    fuhao='+';  //代表相加求和
    mark=2;     //第二个数,符号右边的数
}

void Widget::on_Btn_sub_clicked()
{
    if(issum)
    {
        S=sum+"-";
        num1 = result;
    }
    else{
        S+="-";
    }
    ui->lineEdit_str->setText(S);
    fuhao='-';  //代表相加求和
    mark=2;     //第二个数,符号右边的数
}

void Widget::on_Btn_mul_clicked()
{
    if(issum)
    {
        S=sum+"*";
        num1 = result;
    }
    else{
        S+="*";
    }
    ui->lineEdit_str->setText(S);
    fuhao='*';  //代表相加求和
    mark=2;     //第二个数,符号右边的数
}

void Widget::on_Btn_div_clicked()
{
    if(issum)
    {
        S=sum+"/";
        num1 = result;
    }
    else{
        S+="/";
    }
    ui->lineEdit_str->setText(S);
    fuhao='/';  //代表相加求和
    mark=2;     //第二个数,符号右边的数
}


/*************************
  *********求和*********
*************************/
void Widget::on_Btn_sum_clicked()
{
    ui->lineEdit_sum->clear();
    //fuhao代表运算方式
    switch(fuhao){
    case '+':result=num1+num2;
        break;
    case '-':result=num1-num2;
        break;
    case '*':result=num1*num2;
        break;
    case '/':result=num1/num2;
        break;
    default:result=num1;
    }
    sum = QString::number(result,10);
    ui->lineEdit_sum->setText(sum);

    S="";
    num1=0;
    num2=0;

    ui->lineEdit_str->clear();
    //result=0;
    mark=1;
    issum = true;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG不要过来呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值