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);
}