QT实现简易计算器

    科技2026-02-03  4

    B站视频地址

    https://www.bilibili.com/video/BV1254y117BQ?pop_share=1

    代码包

    https://download.csdn.net/download/conjurer_yft/12914866

    界面

    定义属性

    定义a用来存储LineEdit显示内容

    定义b用来存储运算符等

    #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(); public: QString a; QStringList b; private: Ui::Widget *ui; }; #endif // WIDGET_H

    对a。b进行清空

    #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); a.clear(); b.clear(); } Widget::~Widget() { delete ui; }

    按键值处理

    定义按键处理函数void btn_logic(int x ,QString i = " " ); 参数1:数字参数2:运算符

    .h文件中函数声明

    void btn_logic(int x ,QString i = " " );

    .c文件声明

    void Widget::btn_logic(int x,QString i) { if(i == " ") { a += QString::number(x); } else if(x == 0) { /************** * 如果运算符按键被按下则将 * lineEdit中的内容写入b【0】中 * 将运算符存储到b【1】中 ****************************/ if(i != "=") { b.insert(0,a); a.clear(); b.insert(1,i); } else { b.insert(2,a); den_logic(); } } //对lineEdit中内容进行显示 ui->lineEdit->setText(a); }

    绑定按键信号与槽

    //绑定按键0与处理函数 connect(ui->pushButton_0,&QPushButton::clicked,[=](){ btn_logic(0);}); //绑定按键1与处理函数 connect(ui->pushButton_1,&QPushButton::clicked,[=](){ btn_logic(1);}); //绑定按键2与处理函数 connect(ui->pushButton_2,&QPushButton::clicked,[=](){ btn_logic(2);}); //绑定按键3与处理函数 connect(ui->pushButton_3,&QPushButton::clicked,[=](){ btn_logic(3);}); //绑定按键4与处理函数 connect(ui->pushButton_4,&QPushButton::clicked,[=](){ btn_logic(4);}); //绑定按键5与处理函数 connect(ui->pushButton_5,&QPushButton::clicked,[=](){ btn_logic(5);}); //绑定按键6与处理函数 connect(ui->pushButton_6,&QPushButton::clicked,[=](){ btn_logic(6);}); //绑定按键7与处理函数 connect(ui->pushButton_7,&QPushButton::clicked,[=](){ btn_logic(7);}); //绑定按键8与处理函数 connect(ui->pushButton_8,&QPushButton::clicked,[=](){ btn_logic(8);}); //绑定按键9与处理函数 connect(ui->pushButton_9,&QPushButton::clicked,[=](){ btn_logic(9);}); //绑定按键+与处理函数 connect(ui->pushButton_jia,&QPushButton::clicked,[=](){ btn_logic(0,"+");}); //绑定按键-与处理函数 connect(ui->pushButton_jie,&QPushButton::clicked,[=](){ btn_logic(0,"-");}); //绑定按键*与处理函数 connect(ui->pushButton_cen,&QPushButton::clicked,[=](){ btn_logic(0,"*");}); //绑定按键/与处理函数 connect(ui->pushButton_cu,&QPushButton::clicked,[=](){ btn_logic(0,"/");}); //绑定按键=与处理函数 connect(ui->pushButton_den,&QPushButton::clicked,[=](){ btn_logic(0,"=");}); //清空 connect(ui->pushButton_guil,&QPushButton::clicked,[=](){ a.clear(); b.clear(); //对lineEdit中内容进行更新 ui->lineEdit->setText(a); }); //退格 connect(ui->pushButton_tui,&QPushButton::clicked,[=](){ a.chop(1); //对lineEdit中内容进行更新 ui->lineEdit->setText(a); });

    实现等于运算

    void Widget::den_logic() { a.clear(); if(b.at(1) == "+") { a += QString::number( QString(b.at(0)).toInt() + QString(b.at(2)).toInt()); } else if(b.at(1) == "-") { a += QString::number( QString(b.at(0)).toInt() - QString(b.at(2)).toInt()); } else if(b.at(1) == "*") { a += QString::number( QString(b.at(0)).toInt() * QString(b.at(2)).toInt()); } else if(b.at(1) == "/") { a += QString::number( QString(b.at(0)).toInt() / QString(b.at(2)).toInt()); } ui->lineEdit->setText(a); }
    Processed: 0.022, SQL: 9