基于QT5实现简易计算器


一、写在前面

软件介绍:

仿照win10计算器,基于qt5实现具有简单运算的计算器。

环境:

QT 5.12.2+QT Creator 4.8.2+win10

二、成品展示

按照惯例,直接上图
在按钮上鼠标悬停与按下有不同颜色
在这里插入图片描述

三、界面布局

在这里插入图片描述
在这里插入图片描述

可以看到我使用的是一个网格布局GridLayout和四个垂直布局VerticalLayout,每个垂直布局对应的是一列按钮。先把VerticalLayout拖出来放到界面空白处,再把按钮拖进去,最后把VerticalLayout拖进GridLayout即可。直接用网格布局应该也是可以的,建议大家尝试一下。
控件的名称我写的比较随意,建议大家对照下图进行布局:
在这里插入图片描述

为了使按钮能够填满布局,按住CTRL并逐一点击所有按钮将其选中,在右侧属性面板中,将sizepolicy改为下图所示。
在这里插入图片描述

接着设置按钮字体,选中所有数字按钮0-9,更改字体为:
在这里插入图片描述
选中其他按钮,更改字体为:
在这里插入图片描述
选中显示结果的LineEdit,右键选择改变样式表,将字体改为黑色。

color: rgb(0, 0, 0);

在这里插入图片描述
最后,在.cpp文件的构造函数中的 ui->setupUi(this); 之后,加入如下代码:

ui->pushButton_1->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_2->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_3->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_4->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_5->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_6->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_7->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_8->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_9->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_0->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_zf->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_poi->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_equ->setStyleSheet(
                    "QPushButton{background-color:rgb(163,163,163);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(113,113,113);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(63,63,63);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_bfh->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_CE->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_C->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_bac->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_fs->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_pf->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_kg->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_div->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_mul->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_sub->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_add->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );


	//靠右垂直居中显示
    ui->lineEdit->setText("0");        //初始化
    ui->lineEdit->setAlignment( Qt::AlignHCenter);
    ui->lineEdit->setAlignment(Qt::AlignRight);

通过代码设置样式表,来设置按钮正常显示、鼠标悬停、按下三种状态下的颜色,以及LineEdit的数字靠右垂直居中显示。这一大段有不少重复,其实可以直接选中相同颜色的多个按钮,直接右键改变样式表即可。

四、按钮功能

直接把代码贴出来吧,注意这里的槽函数需要在ui中按钮右键转到槽自动生成槽函数,另外控件的名称要对应好。
在这里插入图片描述
caculator.h

#ifndef CACULATOR_H
#define CACULATOR_H

#include <QMainWindow>

namespace Ui {
class caculator;
}

class caculator : public QMainWindow
{
    Q_OBJECT

public:
    explicit caculator(QWidget *parent = 0);
    ~caculator();
    int m_var2;
    int m_var3;
    int m_var1;
    double display;
    bool iscontinue;
    bool isstr;
    QString str;
    double result;
    double num1;
    double num2;
    int count;
    bool isdot;
    bool  Dot;
    int isDel;
    double buttonDownNum(int numSize);

private slots:
    void on_pushButton_1_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_add_clicked();

    void on_pushButton_sub_clicked();

    void on_pushButton_mul_clicked();

    void on_pushButton_div_clicked();

    void on_pushButton_equ_clicked();

    void on_pushButton_zf_clicked();

    void on_pushButton_0_clicked();

    void on_pushButton_poi_clicked();

    void on_pushButton_fs_clicked();

    void on_pushButton_pf_clicked();

    void on_pushButton_kg_clicked();

    void on_pushButton_bfh_clicked();

    void on_pushButton_CE_clicked();

    void on_pushButton_C_clicked();

    void on_pushButton_bac_clicked();

private:
    Ui::caculator *ui;
};

#endif // CACULATOR_H

caculator.cpp

#include "caculator.h"
#include "ui_caculator.h"
#include "QVBoxLayout"
#include "QGridLayout"
#include "QtMath"


caculator::caculator(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::caculator)
  ,m_var2(0),m_var3(0),m_var1(0),display(0)
{
    ui->setupUi(this);
    display = 0.0;
    num1 = 0;
    num2 = 0;
    result = 0.0;
    str = "";
    isstr = false;
    iscontinue = false;
    Dot = false;
    count = 1;
    isDel = 0;
    ui->pushButton_1->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_2->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_3->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_4->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_5->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_6->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_7->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_8->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_9->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_0->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_zf->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_poi->setStyleSheet(
                    "QPushButton{background-color:rgb(250,250,250);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_equ->setStyleSheet(
                    "QPushButton{background-color:rgb(163,163,163);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(113,113,113);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(63,63,63);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_bfh->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_CE->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_C->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_bac->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_fs->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_pf->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_kg->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_div->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_mul->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_sub->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );
    ui->pushButton_add->setStyleSheet(
                    "QPushButton{background-color:rgb(240,240,240);border: 0px;}"
                    "QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
                    "QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
                );



    ui->lineEdit->setText("0");        //初始化
    ui->lineEdit->setAlignment( Qt::AlignHCenter);
    ui->lineEdit->setAlignment(Qt::AlignRight);

}

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

double caculator::buttonDownNum(int numSize)
{
    if (!isstr) //运算符没有被按下,那就是num1
    {
        if (!iscontinue) //按下一次
        {
            num1 = numSize;
            iscontinue = true;
        }
        else
        {
            if(isDel>0){
                    count=count-isDel;
                    isDel = 0;;
                }
            num1 = num1 * pow(10, count) + numSize;
            if (Dot)
            {

                num1 = num1 / (pow(10, count));
                count++;

            }
        }

        return num1;
    }
    else  //有运算符被按下
    {
        if (!iscontinue) //是否连续按下
        {
            num2 = numSize;
            iscontinue = true;
        }
        else
        {
            num2 = num2 * pow(10, count) + numSize;
            if (Dot)
            {
                num2 = num2 / (pow(10, count));
                count++;
            }
        }

        return num2;
    }
}





void caculator::on_pushButton_1_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(1)));
}

void caculator::on_pushButton_2_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(2)));
}

void caculator::on_pushButton_3_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(3)));
}

void caculator::on_pushButton_4_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(4)));
}

void caculator::on_pushButton_5_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(5)));
}

void caculator::on_pushButton_6_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(6)));
}

void caculator::on_pushButton_7_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(7)));
}

void caculator::on_pushButton_8_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(8)));
}

void caculator::on_pushButton_9_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(9)));
}

void caculator::on_pushButton_0_clicked()
{
    ui->lineEdit->setText(QString::number(buttonDownNum(0)));
}

void caculator::on_pushButton_add_clicked()
{
    str = "+";
    isstr = true;
    iscontinue = false;
    Dot = false;
    count = 1;
}

void caculator::on_pushButton_sub_clicked()
{
    str = "-";
    isstr = true;
    iscontinue = false;
    Dot = false;
    count = 1;
}

void caculator::on_pushButton_mul_clicked()
{
    str = "*";
    isstr = true;
    iscontinue = false;
    Dot = false;
    count = 1;
}

void caculator::on_pushButton_div_clicked()
{
    str = "/";
    isstr = true;
    iscontinue = false;
    Dot = false;
    count = 1;
}

void caculator::on_pushButton_equ_clicked()
{
    if (str == "+")
        result = num1 + num2;
    else if (str == "-")
        result = num1 - num2;
    else if (str == "*")
        result = num1 * num2;
    else if (str == "/")
    {
        result = double(num1) / double(num2);
    }
    num1 = result;
    display = result;
    isstr = false;
    iscontinue = false;
    Dot = false;
    count = 1;
    ui->lineEdit->setText(QString::number(display));
}

void caculator::on_pushButton_zf_clicked()
{
    result = -num1;
    num1 = result;
    display = result;
    isstr = false;
    iscontinue = false;
    Dot = false;
    count = 1;
    ui->lineEdit->setText(QString::number(display));
}



void caculator::on_pushButton_poi_clicked()
{
    Dot = true;
}

void caculator::on_pushButton_fs_clicked()
{
    result = 1 / num1;
        num1 = result;
        display = result;
        isstr = false;
        iscontinue = false;
        Dot = false;
        count = 1;
        ui->lineEdit->setText(QString::number(display));
}

void caculator::on_pushButton_pf_clicked()
{

    result = num1*num1;
        num1 = result;
        display = result;
        isstr = false;
        iscontinue = false;
        Dot = false;
        count = 1;
        ui->lineEdit->setText(QString::number(display));
}

void caculator::on_pushButton_kg_clicked()
{
    result = sqrt(num1);
    num1 = result;
    display = result;
    isstr = false;
    iscontinue = false;
    Dot = false;
    count = 1;
    ui->lineEdit->setText(QString::number(display));
}

void caculator::on_pushButton_bfh_clicked()
{

}

void caculator::on_pushButton_CE_clicked()
{
    if(iscontinue)
    {
        num2=0;
    }
    else
    {
        num1=0;
    }
    count = 1;
    isDel = 0;
    Dot=false;
    ui->lineEdit->setText(QString::number(0));
}

void caculator::on_pushButton_C_clicked()
{
    num1 = 0;
    num2 = 0;
    display = 0;
    iscontinue = false;
    isstr = false;
    Dot = false;
    count = 1;
    isDel = 0;
    ui->lineEdit->setText(QString::number(display));
}

int num(double f)
{
    int i = 0;
    while (i++, f != (int)f)
        f *= 10;
    return i - 1;
}

void caculator::on_pushButton_bac_clicked()
{
    isDel ++;
        if (isDel > count)
            isDel = count;
        if (!isstr) {
            if (num1 - (int)num1 > 0){
                int weishu = num(num1);
                num1 = num1 * pow(10,weishu);
                num1 = (int)num1 / 10;
                num1 = num1 / pow(10, weishu - 1);
                display = num1;
                ui->lineEdit->setText(QString::number(display));
            }else{
                    num1 = (int)num1 / 10;
                    display = num1;
                    ui->lineEdit->setText(QString::number(display));
            }
        }
        else {
            if (num2 - (int)num2 > 0) {
                int weishu = num(num2);
                num2 = num2 * pow(10, weishu);
                num2 = (int)num2 / 10;
                num2 = num2 / pow(10, weishu - 1);
                display = num2;
                ui->lineEdit->setText(QString::number(display));
            }
            else {
                num2 = (int)num2 / 10;
                display = num2;
                ui->lineEdit->setText(QString::number(display));
            }
        }
}

main.cpp

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    caculator w;
    w.setStyleSheet("background-color:rgb(230,230,230);");
    w.setWindowTitle("计算器");
    w.show();

    return a.exec();
}

五、源码下载

完整源码已上传至CSDN,点我下载

六、补充

  • 如果有一些找不到函数的错误,可能是函数名与我不一样或是界面ui名称和我不一样,这个需要自己注意一下哦
  • 有一些按钮的功能没有实现,在运算逻辑上也有一些bug
  • 有什么问题的话可以在评论区提出来,我会第一时间回复
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KyrieFeng

请你喝奶茶

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

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

打赏作者

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

抵扣说明:

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

余额充值