#include "biaozhun.h"
#include "ui_biaozhun.h"
#include <QDebug>
#include<iostream>
using namespace std;
Biaozhun::Biaozhun(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Biaozhun)
{
ui->setupUi(this);
this->setWindowTitle(tr("计算器"));
AA="0";//+-*/之后的数字
BB=" ";
CC=" ";
DD=" ";//记录小数点
k=0;
m=0;
ui->lineEdit->setEnabled(false);
ui->lineEdit->setText("0");
connect(ui->Button0, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button1, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button2, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button3, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button4, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button5, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button6, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button7, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button8, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Button9, SIGNAL(clicked()), this, SLOT(Clicked_()));
connect(ui->Buttonchu, SIGNAL(clicked()), this, SLOT(Clicked()));
connect(ui->Buttoncheng, SIGNAL(clicked()), this, SLOT(Clicked()));
connect(ui->Buttonjia, SIGNAL(clicked()), this, SLOT(Clicked()));
connect(ui->Buttonjian, SIGNAL(clicked()), this, SLOT(Clicked()));
}
Biaozhun::~Biaozhun()
{
delete ui;
}
void Biaozhun::Clicked_()
{
QPushButton* button = qobject_cast<QPushButton *>(sender());
if(k>14)
{
return;
}
AA=ui->lineEdit->text();
if((CC!=" "&&(AA=="+"||AA=="-"||AA=="×"||AA=="÷"))||AA=="0")
{
ui->lineEdit->setText(button->text());
m=0;
}
else if(CC!=" "&&m==1)
{
ui->lineEdit->setText(button->text());
CC=" ";
BB=" ";
m=0;
}
else
{
ui->lineEdit->setText(ui->lineEdit->text()+button->text());
}
AA=ui->lineEdit->text();
k=AA.length();
}
void Biaozhun::Clicked()
{
QPushButton* button = qobject_cast<QPushButton *>(sender());
AA=ui->lineEdit->text();
if(AA.rightRef(1)=="+"||AA.rightRef(1)=="-"||AA.rightRef(1)=="×"||AA.rightRef(1)=="÷"||AA.rightRef(1)==".")
{
return;
}
if(m==0)
{
BB=AA;
ui->lineEdit->setText(button->text());
CC=button->text();
k=0;
}
else
{
ui->lineEdit->setText(button->text());
CC=button->text();
k=0;
}
AA=ui->lineEdit->text();
DD=" ";
}
void Biaozhun::on_Buttonc_clicked()
{
ui->lineEdit->setText("0");
AA="0";
BB=" ";
CC=" ";
DD=" ";
k=0;
m=0;
}
void Biaozhun::on_Buttondel_clicked()
{
if(m==1)
{
return;
}
AA=ui->lineEdit->text();
if(AA.rightRef(1)=="+"||AA.rightRef(1)=="-"||AA.rightRef(1)=="×"||AA.rightRef(1)=="÷")
{
return;
}
if(AA.rightRef(1)==".")
{
DD=" ";
}
QString jisuang = ui->lineEdit->text();
jisuang.chop(1);
ui->lineEdit->setText(jisuang);
AA=ui->lineEdit->text();
k=AA.length();
if(AA==""){ui->lineEdit->setText("0");k=0;}
//if(CC!=" ")
//{
//BB=ui->lineEdit->text();
//CC=" ";
//}
}
void Biaozhun::on_Buttonoff_clicked()
{
close();
}
void Biaozhun::on_Buttondian_clicked()
{
if(k>13)
{
return;
}
if(m==1)
{
ui->lineEdit->setText("0.");
m=0;
DD=".";
AA="0.";
return;
}
AA=ui->lineEdit->text();
if(AA.rightRef(1)=="+"||AA.rightRef(1)=="-"||AA.rightRef(1)=="×"||AA.rightRef(1)=="÷"||AA.rightRef(1)==".")
{
return;
}
else
{
if(DD==" ")
{
AA.append(".");
DD=".";
}
}
ui->lineEdit->setText(AA);
k=AA.length();
}
void Biaozhun::on_Buttonjiajian_clicked()
{
AA=ui->lineEdit->text();
if(AA=="0"||AA=="0.")
{
return;
}
else if(AA.left(1)=="-")//删除左边的-号
{
AA.remove(0,1);
}
else
{
AA.prepend("-");//添加-号
}
ui->lineEdit->setText(AA);
if(CC!=" "&&m==1)
{
BB=ui->lineEdit->text();
m=0;
CC=" ";
}
}
void Biaozhun::on_Buttondeng_clicked()
{
if(AA.rightRef(1)=="+"||AA.rightRef(1)=="-"||AA.rightRef(1)=="×"||AA.rightRef(1)=="÷"||AA.rightRef(1)==".")
{
return;
}
if(CC==" ")
{
return;
}
else
{
if(CC=="+"||CC=="-")
{
double p=0,q=0;
p=BB.toDouble();
q=AA.toDouble();
if(CC=="+") p=p+q;
else if(CC=="-") p=p-q;
JJ=QString::number(p);
}
else if(CC=="×"||CC=="÷")
{
double p=0,q=0;
p=BB.toDouble();
q=AA.toDouble();
if(CC=="×")
{
p=p*q;qDebug("%f",p);
JJ=QString::number(p);
}
else if(CC=="÷")
{
if(AA=="0")
{
JJ="Error";
}
else
{
p=p/q;
JJ=QString::number(p);
}
}
}
k=JJ.length();
ui->lineEdit->setText(JJ);
BB=JJ;
m=1;
}
}