#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mycal.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->input->setAlignment(Qt::AlignRight); //输入框右对齐
ui->formula->setAlignment(Qt::AlignRight); //表达式框右对齐
ui->histoyText->setAlignment(Qt::AlignRight); //历史记录框右对齐
ui->input->setText("0"); //输入框初始值显示0
ui->histoyText->setText("尚无历史记录"); //历史记录初始值设置
clearall = false; //清除标志
eq = false; //是否有历史记录
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_one_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"1");
}
void MainWindow::on_two_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"2");
}
void MainWindow::on_three_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"3");
}
void MainWindow::on_four_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"4");
}
void MainWindow::on_five_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"5");
}
void MainWindow::on_six_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"6");
}
void MainWindow::on_seven_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"7");
}
void MainWindow::on_eight_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"8");
}
void MainWindow::on_nine_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"9");
}
void MainWindow::on_zero_clicked()
{
if(ui->input->text() == "0")
{
ui->input->clear();
}
QString s = ui->formula->text();
int n = s.length();
if(n != 0 && s[n - 1] == ')') //数字前不能出现右括号
{
QMessageBox::information(NULL, "错误","数字前不能为右括号!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->input->setText(ui->input->text()+"0");
}
void MainWindow::on_pushButton_3_clicked() //小数点
{
QString s = ui->input->text(); //获取之前输入的数字
int n = s.length();
if(n != 0 && (s[n - 1] > '9' || s[n - 1] < '0')) //小数点前没有数字
{
QMessageBox::information(NULL, "错误","小数点前应输入数字!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
else if(n == 0) //不能小数点开头
{
QMessageBox::information(NULL, "错误","小数点前为空!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
for(int i = 0; i < n; ++ i)
{
if(s[i] == '.') //这个数字前是否还有小数点
{
QMessageBox::information(NULL, "错误","只能有一个小数点!",
QMessageBox::Yes,QMessageBox::Yes);
return;
break;
}
}
ui->input->setText(ui->input->text()+".");
}
void MainWindow::on_symbol_clicked() //正负号
{
if(ui->input->text()[0] == '-') //是负数
{
QString str = ui->input->text();
QString s;
for(int i = 1, j = 0; i < str.length(); ++i, ++j)
s[j] = str[i]; //去掉负号,变为正数
ui->input->setText(s);
}
else ui->input->setText("-"+ui->input->text()); //为正数,加上负号
}
void MainWindow::on_rightB_clicked() //左括号
{
if(ui->input->text()!="0")
ui->formula->setText(ui->formula->text() + ui->input->text());
QString s = ui->formula->text();
int n = s.length();
//左括号前不能有右括号,数字和小数点出现
if(n != 0 &&(s[n - 1] == ')' || s[n - 1] == '.' || (s[n - 1] >= '0' && s[n - 1] <= '9')))
{
QMessageBox::information(NULL, "错误","括号前输入非法!",
QMessageBox::Yes,QMessageBox::Yes);
return;
}
ui->formula->setText(ui->formula->text() + "(");
ui->input->setText("0");
}
void MainWindow::on_LeftB_clicked() //右括号
{
if(ui->input->text()!="0")
ui->formula->setText(ui->formula->text() + ui->input->text());
QString s = ui->formula->text();
int n = s.length();
if(n == 0)
{
QMessageBox::information(NULL, "错误","右括号前不能为空!",
xiongyuqing
- 粉丝: 123
- 资源: 5
会员权益专享
最新资源
- 第4次作业_计算税后工资.cpp
- 校园管理 - 学生管理系统源码
- 1047538782469312MOJiRead_channel_google_code_1.5.5_60_20230314182834_NO-HW_release.apk
- stm32的nucleo开发板点亮LED的汇编程序
- WPSOffice-v17.3.2(1394)-v8a,v7a-Balatan.apk
- python练习题代码参考-职工管理系统
- python读取某文件夹下的所有文件名将读出的文件名输出到CSV文件
- Sparse_Identification_Part2.mlx
- python斐波那契数列
- python非递归方式计算阶乘(循环)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


