一、写在前面
软件介绍:
仿照win10计算器,基于qt5实现具有简单运算的计算器。
环境:
QT 5.12.2+QT Creator 4.8.2+win10
二、成品展示
按照惯例,直接上图
在按钮上鼠标悬停与按下有不同颜色
三、界面布局
可以看到我使用的是一个网格布局GridLayout和四个垂直布局VerticalLayout,每个垂直布局对应的是一列按钮。先把VerticalLayout拖出来放到界面空白处,再把按钮拖进去,最后把VerticalLayout拖进GridLayout即可。直接用网格布局应该也是可以的,建议大家尝试一下。
控件的名称我写的比较随意,建议大家对照下图进行布局:
为了使按钮能够填满布局,按住CTRL并逐一点击所有按钮将其选中,在右侧属性面板中,将sizepolicy改为下图所示。
接着设置按钮字体,选中所有数字按钮0-9,更改字体为:
选中其他按钮,更改字体为:
选中显示结果的LineEdit,右键选择改变样式表,将字体改为黑色。
color: rgb(0, 0, 0);
最后,在.cpp文件的构造函数中的 ui->setupUi(this); 之后,加入如下代码:
ui->pushButton_1->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_2->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_3->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_4->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_5->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_6->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_7->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_8->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_9->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_0->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_zf->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_poi->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_equ->setStyleSheet(
"QPushButton{background-color:rgb(163,163,163);border: 0px;}"
"QPushButton:hover{background-color: rgb(113,113,113);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(63,63,63);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_bfh->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_CE->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_C->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_bac->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_fs->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_pf->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_kg->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_div->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_mul->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_sub->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_add->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
//靠右垂直居中显示
ui->lineEdit->setText("0"); //初始化
ui->lineEdit->setAlignment( Qt::AlignHCenter);
ui->lineEdit->setAlignment(Qt::AlignRight);
通过代码设置样式表,来设置按钮正常显示、鼠标悬停、按下三种状态下的颜色,以及LineEdit的数字靠右垂直居中显示。这一大段有不少重复,其实可以直接选中相同颜色的多个按钮,直接右键改变样式表即可。
四、按钮功能
直接把代码贴出来吧,注意这里的槽函数需要在ui中按钮右键转到槽自动生成槽函数,另外控件的名称要对应好。
caculator.h
#ifndef CACULATOR_H
#define CACULATOR_H
#include <QMainWindow>
namespace Ui {
class caculator;
}
class caculator : public QMainWindow
{
Q_OBJECT
public:
explicit caculator(QWidget *parent = 0);
~caculator();
int m_var2;
int m_var3;
int m_var1;
double display;
bool iscontinue;
bool isstr;
QString str;
double result;
double num1;
double num2;
int count;
bool isdot;
bool Dot;
int isDel;
double buttonDownNum(int numSize);
private slots:
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_add_clicked();
void on_pushButton_sub_clicked();
void on_pushButton_mul_clicked();
void on_pushButton_div_clicked();
void on_pushButton_equ_clicked();
void on_pushButton_zf_clicked();
void on_pushButton_0_clicked();
void on_pushButton_poi_clicked();
void on_pushButton_fs_clicked();
void on_pushButton_pf_clicked();
void on_pushButton_kg_clicked();
void on_pushButton_bfh_clicked();
void on_pushButton_CE_clicked();
void on_pushButton_C_clicked();
void on_pushButton_bac_clicked();
private:
Ui::caculator *ui;
};
#endif // CACULATOR_H
caculator.cpp
#include "caculator.h"
#include "ui_caculator.h"
#include "QVBoxLayout"
#include "QGridLayout"
#include "QtMath"
caculator::caculator(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::caculator)
,m_var2(0),m_var3(0),m_var1(0),display(0)
{
ui->setupUi(this);
display = 0.0;
num1 = 0;
num2 = 0;
result = 0.0;
str = "";
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
isDel = 0;
ui->pushButton_1->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_2->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_3->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_4->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_5->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_6->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_7->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_8->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_9->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_0->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_zf->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_poi->setStyleSheet(
"QPushButton{background-color:rgb(250,250,250);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_equ->setStyleSheet(
"QPushButton{background-color:rgb(163,163,163);border: 0px;}"
"QPushButton:hover{background-color: rgb(113,113,113);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(63,63,63);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_bfh->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_CE->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_C->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_bac->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_fs->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_pf->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_kg->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_div->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_mul->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_sub->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->pushButton_add->setStyleSheet(
"QPushButton{background-color:rgb(240,240,240);border: 0px;}"
"QPushButton:hover{background-color: rgb(209,209,209);border:none;color:rgb(255, 255, 255);color:black}"
"QPushButton:pressed{background-color: rgb(187,187,187);border:none;color:rgb(255, 255, 255);color:black}"
);
ui->lineEdit->setText("0"); //初始化
ui->lineEdit->setAlignment( Qt::AlignHCenter);
ui->lineEdit->setAlignment(Qt::AlignRight);
}
caculator::~caculator()
{
delete ui;
}
double caculator::buttonDownNum(int numSize)
{
if (!isstr) //运算符没有被按下,那就是num1
{
if (!iscontinue) //按下一次
{
num1 = numSize;
iscontinue = true;
}
else
{
if(isDel>0){
count=count-isDel;
isDel = 0;;
}
num1 = num1 * pow(10, count) + numSize;
if (Dot)
{
num1 = num1 / (pow(10, count));
count++;
}
}
return num1;
}
else //有运算符被按下
{
if (!iscontinue) //是否连续按下
{
num2 = numSize;
iscontinue = true;
}
else
{
num2 = num2 * pow(10, count) + numSize;
if (Dot)
{
num2 = num2 / (pow(10, count));
count++;
}
}
return num2;
}
}
void caculator::on_pushButton_1_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(1)));
}
void caculator::on_pushButton_2_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(2)));
}
void caculator::on_pushButton_3_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(3)));
}
void caculator::on_pushButton_4_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(4)));
}
void caculator::on_pushButton_5_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(5)));
}
void caculator::on_pushButton_6_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(6)));
}
void caculator::on_pushButton_7_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(7)));
}
void caculator::on_pushButton_8_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(8)));
}
void caculator::on_pushButton_9_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(9)));
}
void caculator::on_pushButton_0_clicked()
{
ui->lineEdit->setText(QString::number(buttonDownNum(0)));
}
void caculator::on_pushButton_add_clicked()
{
str = "+";
isstr = true;
iscontinue = false;
Dot = false;
count = 1;
}
void caculator::on_pushButton_sub_clicked()
{
str = "-";
isstr = true;
iscontinue = false;
Dot = false;
count = 1;
}
void caculator::on_pushButton_mul_clicked()
{
str = "*";
isstr = true;
iscontinue = false;
Dot = false;
count = 1;
}
void caculator::on_pushButton_div_clicked()
{
str = "/";
isstr = true;
iscontinue = false;
Dot = false;
count = 1;
}
void caculator::on_pushButton_equ_clicked()
{
if (str == "+")
result = num1 + num2;
else if (str == "-")
result = num1 - num2;
else if (str == "*")
result = num1 * num2;
else if (str == "/")
{
result = double(num1) / double(num2);
}
num1 = result;
display = result;
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
ui->lineEdit->setText(QString::number(display));
}
void caculator::on_pushButton_zf_clicked()
{
result = -num1;
num1 = result;
display = result;
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
ui->lineEdit->setText(QString::number(display));
}
void caculator::on_pushButton_poi_clicked()
{
Dot = true;
}
void caculator::on_pushButton_fs_clicked()
{
result = 1 / num1;
num1 = result;
display = result;
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
ui->lineEdit->setText(QString::number(display));
}
void caculator::on_pushButton_pf_clicked()
{
result = num1*num1;
num1 = result;
display = result;
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
ui->lineEdit->setText(QString::number(display));
}
void caculator::on_pushButton_kg_clicked()
{
result = sqrt(num1);
num1 = result;
display = result;
isstr = false;
iscontinue = false;
Dot = false;
count = 1;
ui->lineEdit->setText(QString::number(display));
}
void caculator::on_pushButton_bfh_clicked()
{
}
void caculator::on_pushButton_CE_clicked()
{
if(iscontinue)
{
num2=0;
}
else
{
num1=0;
}
count = 1;
isDel = 0;
Dot=false;
ui->lineEdit->setText(QString::number(0));
}
void caculator::on_pushButton_C_clicked()
{
num1 = 0;
num2 = 0;
display = 0;
iscontinue = false;
isstr = false;
Dot = false;
count = 1;
isDel = 0;
ui->lineEdit->setText(QString::number(display));
}
int num(double f)
{
int i = 0;
while (i++, f != (int)f)
f *= 10;
return i - 1;
}
void caculator::on_pushButton_bac_clicked()
{
isDel ++;
if (isDel > count)
isDel = count;
if (!isstr) {
if (num1 - (int)num1 > 0){
int weishu = num(num1);
num1 = num1 * pow(10,weishu);
num1 = (int)num1 / 10;
num1 = num1 / pow(10, weishu - 1);
display = num1;
ui->lineEdit->setText(QString::number(display));
}else{
num1 = (int)num1 / 10;
display = num1;
ui->lineEdit->setText(QString::number(display));
}
}
else {
if (num2 - (int)num2 > 0) {
int weishu = num(num2);
num2 = num2 * pow(10, weishu);
num2 = (int)num2 / 10;
num2 = num2 / pow(10, weishu - 1);
display = num2;
ui->lineEdit->setText(QString::number(display));
}
else {
num2 = (int)num2 / 10;
display = num2;
ui->lineEdit->setText(QString::number(display));
}
}
}
main.cpp
#include "caculator.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
caculator w;
w.setStyleSheet("background-color:rgb(230,230,230);");
w.setWindowTitle("计算器");
w.show();
return a.exec();
}
五、源码下载
完整源码已上传至CSDN,点我下载。
六、补充
- 如果有一些找不到函数的错误,可能是函数名与我不一样或是界面ui名称和我不一样,这个需要自己注意一下哦
- 有一些按钮的功能没有实现,在运算逻辑上也有一些bug
- 有什么问题的话可以在评论区提出来,我会第一时间回复