这两天刚开始学习Qt,今天花了一点点时间弄了个最最最简单的计算器。
请各位赐教和鼓励哈。也希望这点小东西能够帮到刚开始学习Qt的同学。
运行图片:
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_Btn_1_clicked();
void on_Btn_2_clicked();
void on_Bnt_3_clicked();
void on_Btn_6_clicked();
void on_Btn_4_clicked();
void on_Btn_5_clicked();
void on_Btn_7_clicked();
void on_Btn_8_clicked();
void on_Btn_9_clicked();
void on_Btn_0_clicked();
void on_Btn_add_clicked();
void on_Btn_sum_clicked();
void on_Btn_sub_clicked();
void on_Btn_mul_clicked();
void on_Btn_div_clicked();
private:
Ui::Widget *ui;
protected:
QString S;
int mark; //标记是第一个数字还是第二个
int num1;
int num2;
int result; //结果
QString sum;
bool issum ;
char fuhao;
};
#endif // WIDGET_H
源文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
mark=1; //用来表示是符号左边的数
S=""; //用来表示lineEdit_str上显示的字符
num1=0;
num2=0;
result=0; //得数
sum=""; //用来表示lineEdit_sum上显示的字符
issum = false; //判断是否求过和
setWindowTitle(tr("计算器"));
ui->lineEdit_str->setReadOnly(true);
ui->lineEdit_sum->setReadOnly(true);
}
Widget::~Widget()
{
delete ui;
}
/*************************
********数字********
*************************/
void Widget::on_Btn_0_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="0";
ui->lineEdit_str->setText(S);
if(mark==1) //符号左边的数
{
num1=num1*10+0;
}
else{
num2=num2*10+0;
}
}
void Widget::on_Btn_1_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="1";
ui->lineEdit_str->setText(S);
if(mark==1) //符号左边的数
{
num1=num1*10+1;
}
else{
num2=num2*10+1;
}
}
void Widget::on_Btn_2_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="2";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+2;
}
else{
num2=num2*10+2;
}
}
void Widget::on_Bnt_3_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="3";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+3;
}
else{
num2=num2*10+3;
}
}
void Widget::on_Btn_4_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="4";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+4;
}
else{
num2=num2*10+4;
}
}
void Widget::on_Btn_5_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="5";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+5;
}
else{
num2=num2*10+5;
}
}
void Widget::on_Btn_6_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="6";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+6;
}
else{
num2=num2*10+6;
}
}
void Widget::on_Btn_7_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="7";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+7;
}
else{
num2=num2*10+7;
}
}
void Widget::on_Btn_8_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="8";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+8;
}
else{
num2=num2*10+8;
}
}
void Widget::on_Btn_9_clicked()
{
if(issum)
{
ui->lineEdit_sum->clear();
}
issum = false;
S+="9";
ui->lineEdit_str->setText(S);
if(mark==1)
{
num1=num1*10+9;
}
else{
num2=num2*10+9;
}
}
/*************************
********运算方法********
*************************/
void Widget::on_Btn_add_clicked()
{
if(issum)
{
S=sum+"+";
num1 = result;
}
else{
S+="+";
}
ui->lineEdit_str->setText(S);
fuhao='+'; //代表相加求和
mark=2; //第二个数,符号右边的数
}
void Widget::on_Btn_sub_clicked()
{
if(issum)
{
S=sum+"-";
num1 = result;
}
else{
S+="-";
}
ui->lineEdit_str->setText(S);
fuhao='-'; //代表相加求和
mark=2; //第二个数,符号右边的数
}
void Widget::on_Btn_mul_clicked()
{
if(issum)
{
S=sum+"*";
num1 = result;
}
else{
S+="*";
}
ui->lineEdit_str->setText(S);
fuhao='*'; //代表相加求和
mark=2; //第二个数,符号右边的数
}
void Widget::on_Btn_div_clicked()
{
if(issum)
{
S=sum+"/";
num1 = result;
}
else{
S+="/";
}
ui->lineEdit_str->setText(S);
fuhao='/'; //代表相加求和
mark=2; //第二个数,符号右边的数
}
/*************************
*********求和*********
*************************/
void Widget::on_Btn_sum_clicked()
{
ui->lineEdit_sum->clear();
//fuhao代表运算方式
switch(fuhao){
case '+':result=num1+num2;
break;
case '-':result=num1-num2;
break;
case '*':result=num1*num2;
break;
case '/':result=num1/num2;
break;
default:result=num1;
}
sum = QString::number(result,10);
ui->lineEdit_sum->setText(sum);
S="";
num1=0;
num2=0;
ui->lineEdit_str->clear();
//result=0;
mark=1;
issum = true;
}