当前位置: 首页 > article >正文

QT_demo1_calculator

calculator

界面文件

如图设置,设置多个按钮,以及显示界面的lineEdit。
在这里插入图片描述

文件组成

在这里插入图片描述

生成各按钮的槽函数

在这里插入图片描述

1.数字按钮部分
void Widget::setNum(int i)
{
    if(flag == false){
        num1 = num1 * 10 + i;
        ui->lineEdit->setText(QString::number(num1));
    }
    else
    {
        num2 = num2 * 10 + i;
        ui->lineEdit->setText(QString::number(num2));
    }
}

void Widget::on_pushButton_0_clicked(){setNum(0);}
void Widget::on_pushButton_1_clicked(){setNum(1);}
void Widget::on_pushButton_2_clicked(){setNum(2);}
void Widget::on_pushButton_3_clicked(){setNum(3);}
void Widget::on_pushButton_4_clicked(){setNum(4);}
void Widget::on_pushButton_5_clicked(){setNum(5);}
void Widget::on_pushButton_6_clicked(){setNum(6);}
void Widget::on_pushButton_7_clicked(){setNum(7);}
void Widget::on_pushButton_8_clicked(){setNum(8);}
void Widget::on_pushButton_9_clicked(){setNum(9);}

2.运算符按钮

void Widget::on_pushButton_AD_clicked(){ui->lineEdit->setText("0");flag = true; sign = '+'; num2 = 0;}
void Widget::on_pushButton_SU_clicked(){ui->lineEdit->setText("0");flag = true; sign = '-'; num2 = 0;}
void Widget::on_pushButton_MU_clicked(){ui->lineEdit->setText("0");flag = true; sign = '*'; num2 = 0;}
void Widget::on_pushButton_DV_clicked(){ui->lineEdit->setText("0");flag = true; sign = '/'; num2 = 0;}

3.等号按钮

void Widget::on_pushButton_EQ_clicked()
{
    switch(sign)
    {
    case '+':num1 += num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '-':num1 -= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '*':num1 *= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '/':num1 /= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    }
}

4.删除按钮

void Widget::on_pushButton_BS_clicked()
{
    if(flag)
    {
        num2 /= 10;
        ui->lineEdit->setText(QString::number(num2));
    }
    else
    {
        num1 /= 10;
        ui->lineEdit->setText(QString::number(num1));
    }
}

5.清空按钮

void Widget::on_pushButton_CL_clicked()
{
    num1 = 0;
    num2 = 0;
    flag = false;
    ui->lineEdit->setText("0");
}

6.正负按钮

void Widget::on_pushButton_AS_clicked()
{
    if(flag)
    {
        num2 = -num2;
        ui->lineEdit->setText(QString::number(num2));
    }
    else
    {
        num1 = -num1;
        ui->lineEdit->setText(QString::number(num1));
    }
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void setNum(int i);
    void on_pushButton_0_clicked();
    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_AD_clicked();
    void on_pushButton_SU_clicked();
    void on_pushButton_MU_clicked();
    void on_pushButton_DV_clicked();

    void on_pushButton_EQ_clicked();

    void on_pushButton_BS_clicked();

    void on_pushButton_CL_clicked();

    void on_pushButton_AS_clicked();

private:
    Ui::Widget *ui;
    long long num1, num2;
    bool flag;
    char sign;
};
#endif // WIDGET_H

widget.cpp

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->lineEdit->setText("0");
    num1 = num2 = 0;
    flag = false;
}

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

void Widget::setNum(int i)
{
    if(flag == false){
        num1 = num1 * 10 + i;
        ui->lineEdit->setText(QString::number(num1));
    }
    else
    {
        num2 = num2 * 10 + i;
        ui->lineEdit->setText(QString::number(num2));
    }
}

void Widget::on_pushButton_0_clicked(){setNum(0);}
void Widget::on_pushButton_1_clicked(){setNum(1);}
void Widget::on_pushButton_2_clicked(){setNum(2);}
void Widget::on_pushButton_3_clicked(){setNum(3);}
void Widget::on_pushButton_4_clicked(){setNum(4);}
void Widget::on_pushButton_5_clicked(){setNum(5);}
void Widget::on_pushButton_6_clicked(){setNum(6);}
void Widget::on_pushButton_7_clicked(){setNum(7);}
void Widget::on_pushButton_8_clicked(){setNum(8);}
void Widget::on_pushButton_9_clicked(){setNum(9);}


void Widget::on_pushButton_AD_clicked(){ui->lineEdit->setText("0");flag = true; sign = '+'; num2 = 0;}
void Widget::on_pushButton_SU_clicked(){ui->lineEdit->setText("0");flag = true; sign = '-'; num2 = 0;}
void Widget::on_pushButton_MU_clicked(){ui->lineEdit->setText("0");flag = true; sign = '*'; num2 = 0;}
void Widget::on_pushButton_DV_clicked(){ui->lineEdit->setText("0");flag = true; sign = '/'; num2 = 0;}

void Widget::on_pushButton_EQ_clicked()
{
    switch(sign)
    {
    case '+':num1 += num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '-':num1 -= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '*':num1 *= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    case '/':num1 /= num2; ui->lineEdit->setText(QString::number(num1)); flag = false; break;
    }
}


void Widget::on_pushButton_BS_clicked()
{
    if(flag)
    {
        num2 /= 10;
        ui->lineEdit->setText(QString::number(num2));
    }
    else
    {
        num1 /= 10;
        ui->lineEdit->setText(QString::number(num1));
    }
}


void Widget::on_pushButton_CL_clicked()
{
    num1 = 0;
    num2 = 0;
    flag = false;
    ui->lineEdit->setText("0");
}


void Widget::on_pushButton_AS_clicked()
{
    if(flag)
    {
        num2 = -num2;
        ui->lineEdit->setText(QString::number(num2));
    }
    else
    {
        num1 = -num1;
        ui->lineEdit->setText(QString::number(num1));
    }
}


http://www.kler.cn/a/613035.html

相关文章:

  • 跨境TRS投资操作指南与系统解决方案
  • 关于bug总结记录
  • Java 中各种锁的使用详解
  • Node.js 如何发布一个 NPM 包——详细教程
  • 第R9周:阿尔兹海默症诊断(优化特征选择版)
  • 美摄科技智能汽车车内实时AR特效方案,让出行充满乐趣
  • 神经网络知识
  • 【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调
  • 智能网联交通加速落地,光路科技TSN技术助推车路云一体化发展
  • 跟着尚硅谷学vue-day1
  • LeetCode 1492 n的第K个因子
  • 浅谈工商企业用电管理的分布式储能设计
  • window系统下安装elk
  • unity一个图片的物体,会有透明的效果
  • 【机器学习】从回声定位到优化引擎:蝙蝠算法在SVR超参数优化中的应用
  • Golang 的 GMP 调度机制常见问题及解答
  • Mininet--log.py-全局函数作用
  • Box86源码剖析(三)
  • JSP笔记
  • python多态、静态方法和类方法