QT实现简易版计算器

一.界面设计

       先创建一个空工程,之后将界面设计好,并且改好名字(方便以后好调用),UI界面设计如下:

 它里面又16个按钮和一个lineEdit组成,将按钮整体排列起来,并设置好框框的大小;图中画线的部分可以控制整个界面输出为大小的图形。

 将每一个按钮更改名字,容易识别,并且生成信号与槽函数

                            

二.功能实现

      mianwindow.h里面的内容

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QString>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_btn7_clicked();

    void on_btn8_clicked();

    void on_btn9_clicked();

    void on_btn_add_clicked();

    void on_btn4_clicked();

    void on_btn5_clicked();

    void on_btn6_clicked();

    void on_btn_sub_clicked();

    void on_btn1_clicked();

    void on_btn2_clicked();

    void on_btn3_clicked();

    void on_btn_mul_clicked();

    void on_btn_C_clicked();

    void on_btn0_clicked();

    void on_btn_equal_clicked();

    void on_btn_div_clicked();

private:
    Ui::MainWindow *ui;

    QString input1;
    QString input2;
    char operate;
};
#endif // MAINWINDOW_H

主函数的实现,加减乘除以及等号和清除的实现

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->lineEdit->setText(tr("0"));  //文本框显示0
    input1="0";
    input2="0";
    operate='0';
}

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


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

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

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

void MainWindow::on_btn_add_clicked()
{
    input1=ui->lineEdit->text();
          operate='+';
          input2="0";
          ui->lineEdit->setText(input2);
}

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

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

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

void MainWindow::on_btn_sub_clicked()
{
    input1=ui->lineEdit->text();
          operate='-';
          input2="0";
          ui->lineEdit->setText(input2);
}

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

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

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

void MainWindow::on_btn_mul_clicked()
{
    input1=ui->lineEdit->text();
          operate='*';
          input2="0";
          ui->lineEdit->setText(input2);
}

void MainWindow::on_btn_C_clicked()
{
    input1="0";
    input2="0";
    operate='0';
    ui->lineEdit->clear();
}

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

}

void MainWindow::on_btn_equal_clicked()
{
    float num1,num2;
        input2=ui->lineEdit->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->lineEdit->setText(input2);

}

void MainWindow::on_btn_div_clicked()
{
    input1=ui->lineEdit->text();
          operate='/';
          input2="0";
          ui->lineEdit->setText(input2);
}

 三。功能展示

      例子:1 * 2 = 2 ,点击按钮1和2以及*号,点击等号ok了

 

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值