Qt实现简易计算器

前言:

关于软件:

一、

拖拽若干个Push Batton、1个lineEdit等组件到窗口中,

按钮进行栅格布局;并修改其显示值(text)、组件属性:水平策略和垂直策略为Expanding

如下图:

二、

选择某按键组件,右击后选择“转到槽”,再选择clicked,ok后,自动转到cpp文件中槽函数。

该槽函数是由Qt自动创建和定义的空函数,已和该按键clicked信号连接,我们只需要编写其内部代码即可。

三、cpp代码

#include "counter.h"
#include "ui_counter.h"
Counter::Counter(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Counter)
{
    ui->setupUi(this);
    setFixedSize(350,480);       //画布大小设定
    ui->operateEdit->setText(tr("0"));  //文本框显示0
    input1="0";
    input2="0";
    operate='0';
    ui->operateEdit ->setAlignment(Qt::AlignRight);
    ui->operateEdit->setFont(QFont( "Timers" , 28 ,  QFont::Bold) );
}
    void Counter::on_num1_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("1"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num2_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("2"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num3_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("3"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_dengyu_clicked()
    {
        float num1,num2;
        input2=ui->operateEdit->text();
        if (operate=='0')
        {
            input1=input2;
            operate='0';
        }
        else
        {
            num2=input2.toFloat();
            num1=input1.toFloat();
            switch(operate)
            {
            case '+':  num1=num1+num2;break;
            case '-':   num1=num1-num2;break;
            case '*':  num1=num1*num2;break;
            case '/':   num1=num1/num2;break;
            default:    num1=0;
            }
            input2=QString::number(num1)  ;
            operate='0';
        }
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num4_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("4"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num5_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("5"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num6_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("6"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num7_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("7"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num8_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("8"));
        ui->operateEdit->setText(input2);

    }

    void Counter::on_num9_clicked()
    {
        if(ui->operateEdit->text()=="0")
        ui->operateEdit->setText("");
        input2=ui->operateEdit->text();    //把当前显示内容保存到input2
        input2.append(tr("9"));
        ui->operateEdit->setText(input2);
    }

    void Counter::on_num0_clicked()
    {
        if (input2=="0") {      //当前显示内容为0,则再输入0时,只显示一个0
            input2="0";
        }
        else {
            input2=ui->operateEdit->text();    //把当前显示内容保存到input2
            input2.append(tr("0"));                  //调用append函数,在input2后添加输入内容0
        }
        ui->operateEdit->setText(input2);
    }

    void Counter::on_C_clicked()
    {
        ui->operateEdit->setText("0");

    }

    void Counter::on_DEL_clicked()
    {
       input2.chop(1);
       ui->operateEdit->setText(input2);
       if(ui->operateEdit->text()==NULL)//如果删吧 除完数则显示0
           ui->operateEdit->setText("0");
    }

    void Counter::on_add_clicked()
    {
        input1=ui->operateEdit->text();
        operate='+';
        input2="0";
        ui->operateEdit->setText(input2);


    }

    void Counter::on_app_clicked()
    {
        input1=ui->operateEdit->text();
        operate='-';
        input2="0";
        ui->operateEdit->setText(input2);
    }

    Counter::~Counter()
    {
        delete ui;
    }
void Counter::on_ride_clicked()
{
    input1=ui->operateEdit->text();
    operate='*';
    input2="0";
    ui->operateEdit->setText(input2);
}
void Counter::on_division_clicked()
{
    input1=ui->operateEdit->text();
    operate='/';
    input2="0";
    ui->operateEdit->setText(input2);
}
void Counter::on_off_clicked()
{
    close();
}

void Counter::on_pai_clicked()
{
    ui->operateEdit->setText("3.141592654");
}

四、.h代码

#ifndef COUNTER_H
#define COUNTER_H


#include<QtWidgets>
namespace Ui {
class Counter;
}

class Counter : public QWidget
{
    Q_OBJECT

public:
    explicit Counter(QWidget *parent = 0);
    ~Counter();
private slots:
    void on_num1_clicked();
    
    void on_num2_clicked();
    
    void on_num3_clicked();
    
    void on_dengyu_clicked();
    
    void on_num4_clicked();
    
    void on_num5_clicked();
    
    void on_num6_clicked();
    
    void on_num7_clicked();
    
    void on_num8_clicked();
    
    void on_num9_clicked();
    
    void on_num0_clicked();
    
    void on_C_clicked();
    
    void on_DEL_clicked();
    
    void on_add_clicked();
    
    void on_app_clicked();
    
    void on_ride_clicked();

    void on_division_clicked();

    void on_off_clicked();

    void on_pai_clicked();

private:
    Ui::Counter *ui;
    QString input1;
    QString input2;
    char operate;
};

#endif // COUNTER_H

五、运行

例:999+1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值