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