废话不多说直接放图(左为Win10原版计算器,右为手搓计算器)
全部功能肯定没那么容易做,也只能整整基本的算术运算,当然有点小BUG也是正常的,因为原版的逻辑判断有点多,关系到各种状态,希望你们有兴趣的可以自己完善下,文件已打包可下载。
链接:计算器下载
提取码:nisy
widget.h
#if 1
#ifndef WIDGET_H
#define WIDGET_H
#include <QLabel>
#include <QWidget>
#include <QPushButton>
#include <QGraphicsEffect>
class Widget:public QWidget{
Q_OBJECT
public:
Widget(QWidget* parent=0);
~Widget();
private slots:
void Action(bool);//按钮响应动作
private:
#define WIDGET_WIDTH 322
#define WIDGET_HEIGHT 502
#define BUTTON_WIDTH 75
#define BUTTON_HEIGHT 49
void CreateUI();//创建UI
QLabel* labLowerLabel;//上面的标签
QLabel* labUpperLabel;//下面的标签
QString* strOperator;//运算符号
QString* strUpperValue;//上面的数值
QString* strLowerValue;//下面的数值
QPushButton* btnCalculationButton[20];//计算按钮
QGraphicsDropShadowEffect* efeCalculationButtonShadow[20];//计算按钮的阴影
};
#endif // WIDGET_H
#endif
widget.cpp
#include "widget.h"
Widget::Widget(QWidget* parent):QWidget(parent){
CreateUI();
}
Widget::~Widget(){
}
void Widget::CreateUI(){
this->setWindowOpacity(1.0);
this->setWindowTitle("计算器");
this->resize(WIDGET_WIDTH, WIDGET_HEIGHT);
this->setFixedSize(WIDGET_WIDTH, WIDGET_HEIGHT);
this->strOperator = new QString("");
this->strUpperValue = new QString("");
this->strLowerValue = new QString("0");
this->labLowerLabel = new QLabel(this);
this->labLowerLabel->setText("0");
this->labLowerLabel->setGeometry(5, 78, 310, 49);
this->labLowerLabel->setAlignment(Qt::AlignRight);
this->labLowerLabel->setFont(QFont("Microsoft YaHei", 33));
this->labUpperLabel = new QLabel(this)