这个计算器的功能简介
因为时间没有用很多,更多只是在熟悉和练习使用QT,只能实现一位加减乘除,开方,这些简单的计算,并且输入的数只能选择小数点后一位,多了就不行了哈哈哈。
1.项目模板选择
这里选择QMainWindow作为基类,然后选择UI界面。
2.计算器的UI界面
如图,布局长这样,有以下部分功能,有的功能没实现,也满做一个样子哈哈哈。 UI很好用,就是一个个按键拖到大概的一个地方,然后使用栅格布局(ctrl+G)。可以适度改以下字体大小什么的,在右边的属性可以改,很简单。
3.主要代码
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <math.h>
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget
*parent
= nullptr);
~MainWindow();
private slots
:
void on_button_Backspace_clicked();
void on_button_clear_clicked();
void on_button_clearall_clicked();
void on_button_MC_clicked();
void on_button_7_clicked();
void on_button_8_clicked();
void on_button_9_clicked();
void on_button_chu_clicked();
void on_button_Sqrt_clicked();
void on_button_MR_clicked();
void on_button_4_clicked();
void on_button_5_clicked();
void on_button_6_clicked();
void on_button_cheng_clicked();
void on_button_x262_clicked();
void on_button_MS_clicked();
void on_button_1_clicked();
void on_button_2_clicked();
void on_button_3_clicked();
void on_button_jian_clicked();
void on_button_1x_clicked();
void on_button_M_clicked();
void on_button_0_clicked();
void on_button_dian_clicked();
void on_button_zhengfu_clicked();
void on_button_jia_clicked();
void on_button_result_clicked();
protected:
double n1
=0,n2
=0,result
=0;
int whatfuhao
=0;
int xiaoshudian
=0;
QString s
;
double M
=0;
public:
void readNum(double num
)
{
if(whatfuhao
==0)
{
if(xiaoshudian
==0)
{
n1
=n1
*10+num
;
}
else
{
n1
=n1
+num
*pow(0.1,1);
xiaoshudian
=0;
}
}
else
{
if(xiaoshudian
==0)
{
n2
=n2
*10+num
;
}
else
{
n2
=n2
+num
*pow(0.1,1);
xiaoshudian
=0;
}
}
}
void Fuhao()
{
switch (whatfuhao
)
{
case 1:
result
=n1
+n2
;
break;
case 2:
result
=n1
-n2
;
break;
case 3:
result
=n1
*n2
;
break;
case 4:
result
=n1
/n2
;
break;
case 5:
result
=1/n1
;
break;
case 6:
result
=n1
/262;
break;
case 7:
result
=sqrt(n1
);
break;
case 8:
M
=0;
break;
case 9:
M
=result
;
break;
case 10:
M
=result
;
break;
case 11:
M
=M
+result
;
break;
}
n1
=result
;
n2
=0;
s
=QString
::number(result
,'f',2);
}
private:
Ui
::MainWindow
*ui
;
};
#endif
mainwidow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <math.h>
MainWindow
::MainWindow(QWidget
*parent
) :
QMainWindow(parent
),
ui(new Ui
::MainWindow
)
{
ui
->setupUi(this);
setWindowTitle("XXX计算器");
}
MainWindow
::~MainWindow()
{
delete ui
;
}
void MainWindow
::on_button_Backspace_clicked()
{
s
=s
.left(s
.length()-1);
ui
->lineEdit
->setText(s
);
}
void MainWindow
::on_button_clear_clicked()
{
s
=' ';
n1
=0;
n2
=0;
whatfuhao
=0;
result
=0;
xiaoshudian
=0;
ui
->lineEdit
->setText("0");
}
void MainWindow
::on_button_clearall_clicked()
{
s
=' ';
n1
=0;
n2
=0;
whatfuhao
=0;
result
=0;
xiaoshudian
=0;
ui
->lineEdit
->setText("");
}
void MainWindow
::on_button_MC_clicked()
{
whatfuhao
=8;
}
void MainWindow
::on_button_7_clicked()
{
s
+="7";
ui
->lineEdit
->setText(s
);
readNum(7);
}
void MainWindow
::on_button_8_clicked()
{
s
+="8";
ui
->lineEdit
->setText(s
);
readNum(8);
}
void MainWindow
::on_button_9_clicked()
{
s
+="9";
ui
->lineEdit
->setText(s
);
readNum(9);
}
void MainWindow
::on_button_chu_clicked()
{
s
+="/";
ui
->lineEdit
->setText(s
);
whatfuhao
=4;
}
void MainWindow
::on_button_Sqrt_clicked()
{
whatfuhao
=7;
}
void MainWindow
::on_button_MR_clicked()
{
M
=result
;
QString m1
=QString
::number(result
,'f',2);
ui
->lineEdit
->setText(m1
);
whatfuhao
=9;
}
void MainWindow
::on_button_4_clicked()
{
s
+="4";
ui
->lineEdit
->setText(s
);
readNum(4);
}
void MainWindow
::on_button_5_clicked()
{
s
+="5";
ui
->lineEdit
->setText(s
);
readNum(5);
}
void MainWindow
::on_button_6_clicked()
{
s
+="6";
ui
->lineEdit
->setText(s
);
readNum(6);
}
void MainWindow
::on_button_cheng_clicked()
{
s
+="*";
ui
->lineEdit
->setText(s
);
whatfuhao
=3;
}
void MainWindow
::on_button_x262_clicked()
{
whatfuhao
=6;
}
void MainWindow
::on_button_MS_clicked()
{
whatfuhao
=10;
}
void MainWindow
::on_button_1_clicked()
{
s
+="1";
ui
->lineEdit
->setText(s
);
readNum(1);
}
void MainWindow
::on_button_2_clicked()
{
s
+="2";
ui
->lineEdit
->setText(s
);
readNum(2);
}
void MainWindow
::on_button_3_clicked()
{
s
+="3";
ui
->lineEdit
->setText(s
);
readNum(3);
}
void MainWindow
::on_button_jian_clicked()
{
s
+="-";
ui
->lineEdit
->setText(s
);
whatfuhao
=2;
}
void MainWindow
::on_button_1x_clicked()
{
whatfuhao
=5;
}
void MainWindow
::on_button_M_clicked()
{
whatfuhao
=11;
}
void MainWindow
::on_button_0_clicked()
{
s
+="0";
ui
->lineEdit
->setText(s
);
readNum(0);
}
void MainWindow
::on_button_dian_clicked()
{
s
+=".";
ui
->lineEdit
->setText(s
);
xiaoshudian
=1;
}
void MainWindow
::on_button_zhengfu_clicked()
{
}
void MainWindow
::on_button_jia_clicked()
{
s
+="+";
ui
->lineEdit
->setText(s
);
whatfuhao
=1;
}
void MainWindow
::on_button_result_clicked()
{
Fuhao();
QString re
=QString
::number(result
,'f',2);
ui
->lineEdit
->setText(re
);
}
总结
功能不多,只是分享学习一下,有错的地方可以帮忙指出来,谢谢。