#include "maininterface.h"
#include "ui_maininterface.h"
MainInterface::MainInterface(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MainInterface)
{
ui->setupUi(this);
//设置计算器界面的上限以及下限的大小固定为500 X 800
setMinimumSize(500,700);
setMaximumSize(500,700);
//设置计算器的名字
setWindowTitle("计算器");
//设置计算器图标
QIcon icon("/home/ubuntu/QT_project/calculator/Computer_icon.png");
setWindowIcon(icon);
//规划计算机布局
pb = new QPushButton[17];
int x = 0;
int y = 600;
QFont f;
f.setPointSize(30);
for(int i=0;i<16;i++)
{
//每个按钮都设置在主界面上
pb[i].setParent(this);
//设置每个按钮的大小
pb[i].resize(125,100);
//设置每个按钮的字体大小
pb[i].setFont(f);
//移动每个按钮的位置,让其在主界面都有自己的固定位置
pb[i].move(x,y);
x =((x+125)%500);
if(x == 0)
y -=100;
}
//设置每个按钮的名字
pb[0].setText("=");
pb[1].setText("0");
pb[2].setText(".");
pb[3].setText("+");
pb[4].setText("1");
pb[5].setText("2");
pb[6].setText("3");
pb[7].setText("-");
pb[8].setText("4");
pb[9].setText("5");
pb[10].setText("6");
pb[11].setText("x");
pb[12].setText("7");
pb[13].setText("8");
pb[14].setText("9");
QIcon icon_pb15("/home/ubuntu/QT_project/calculator/pb15_icon.png");
pb[15].setIcon(icon_pb15);
//QSize size_pb15();
pb[15].setIconSize(QSize(125,100));
pb[16].setParent(this);
pb[16].resize(500,100);
pb[16].move(0,200);
pb[16].setText("清空(C)");
pb[16].setFont(f);
//设置标签
pl = new QLabel[2];
for(int i=0;i<2;i++)
{
//设置标签的所属窗口
pl[i].setParent(this);
//设置标签的大小
pl[i].resize(500,100);
//设置标签的默认文本显示的位置(右对齐和中心对齐)
pl[i].setAlignment(Qt::AlignRight|Qt::AlignVCenter);
}
//设置字体为30格式的大小
f.setPointSize(30);
//设置字体格式
pl[0].setFont(f);
//设置字体为50格式的大小
f.setPointSize(50);
//设置字体格式
pl[1].setFont(f);
//移动标签位置
pl[1].move(0,100);
//设置标签的显示文本
pl[1].setText("0");
//建立按钮点击信号的连接
connect(pb,&QPushButton::clicked,this,&MainInterface::PushBotton_1);// =
connect(pb+1,&QPushButton::clicked,this,&MainInterface::PushBotton_2);// 0
connect(pb+2,&QPushButton::clicked,this,&MainInterface::PushBotton_3);// .
connect(pb+3,&QPushButton::clicked,this,&MainInterface::PushBotton_4);// +
connect(pb+4,&QPushButton::clicked,this,&MainInterface::PushBotton_5);// 1
connect(pb+5,&QPushButton::clicked,this,&MainInterface::PushBotton_6);// 2
connect(pb+6,&QPushButton::clicked,this,&MainInterface::PushBotton_7);// 3
connect(pb+7,&QPushButton::clicked,this,&MainInterface::PushBotton_8);// -
connect(pb+8,&QPushButton::clicked,this,&MainInterface::PushBotton_9);// 4
connect(pb+9,&QPushButton::clicked,this,&MainInterface::PushBotton_10);// 5
connect(pb+10,&QPushButton::clicked,this,&MainInterface::PushBotton_11);// 6
connect(pb+11,&QPushButton::clicked,this,&MainInterface::PushBotton_12);// *
connect(pb+12,&QPushButton::clicked,this,&MainInterface::PushBotton_13);// 7
connect(pb+13,&QPushButton::clicked,this,&MainInterface::PushBotton_14);// 8
connect(pb+14,&QPushButton::clicked,this,&MainInterface::PushBotton_15);// 9
connect(pb+15,&QPushButton::clicked,this,&MainInterface::PushBotton_16);// /
connect(pb+16,&QPushButton::clicked,this,&MainInterface::PushBotton_17);// C
}
//清空所有属性
void MainInterface::Empty()
{
num1 = 0;
num2 = 0;
res = 0;
TempNum = 0;
PointNUm = 0;
IntNum = 0;
c =10;
countnum = 1;
C_num = ' ';
pl[0].clear();
pl[1].setText("0");
}
//把对应的值给num1和num2
void MainInterface::InputNum(double a)
{
//第一个数
if(1 == countnum)
{
//点击了按钮
Isclicked = 1;
//将按钮按下的数组成第一个数
if(C_num == '.')
{
PointNUm =PointNUm*10 +a;
num1 = IntNum + PointNUm/c;
c = c*10;
}
else
{
IntNum = IntNum * 10 + a;
num1 = IntNum;
}
//将这个数显示到主标签中
pl[1].setNum(num1);
}
//第二个数
if(2 == countnum)
{
//点击了按钮
Isclicked2 = 1;
//将按钮按下的数组成第二个数
if(C_num == '.')
{
PointNUm =PointNUm *10 +a;
num2 = IntNum + PointNUm/c;
c = c*10;
}
else
{
IntNum = IntNum * 10 + a;
num2 = IntNum;
}
//将这个数显示到主标签中
pl[1].setNum(num2);
}
}
void MainInterface::InputChar(char f)
{
C_num = f;
QString s;
if(1 == countnum)
{
switch(f)
{
case '=':
{
//判断是否点击了,没有点任何按钮,说明第一个数没有更新,就显示没更新过的数
if(Isclicked == 0)
{
s.sprintf("%lg = ",TempNum);
pl[0].setText(s);
}
else //说明第一个数更新了,显示更新的数
{
s.sprintf("%lg = ",num1);
pl[0].setText(s);
//将第一个数暂存到一个未更新过的数中
TempNum = num1;
//将第一个数置0
num1 = 0;
//点击状态设置为未点击
Isclicked = 0;
}
break;
}
case '+':
s.sprintf("%lg + ",num1);
break;
case '-':
s.sprintf("%lg - ",num1);
break;
case 'x':
s.sprintf("%lg x ",num1);
break;
case '/':
s.sprintf("%lg / ",num1);
break;
}
if(f != '=')
{
PointNUm = 0;
c = 10;
TempC = f;
IntNum = 0;
pl[0].setText(s);
countnum = 2;
}
return;
}
if(2 == countnum)
{
switch (TempC) {
case '+':res = num1 + num2;break;
case '-':res = num1 - num2;break;
case 'x':res = num1 * num2;break;
case '/':res = num1 / num2;break;
}
switch(f)
{
case '=':
{
if(Isclicked2 == 0)
{
s.sprintf("%lg %c %lg =",num1,TempC,num2);
pl[0].setText(s);
pl[1].setNum(res);
num1 = res;
}
else
{
s.sprintf("%lg %c %lg =",num1,TempC,num2);
pl[0].setText(s);
pl[1].setNum(res);
num1 = res;
Isclicked2 = 0;
}
break;
}
case '+':
{
num1 = res;
s.sprintf("%lg + ",num1);
}
break;
case '-':
{
num1 = res;
s.sprintf("%lg - ",num1);
}
break;
case 'x':
{
num1 = res;
s.sprintf("%lg x ",num1);
}
break;
case '/':
{
num1 = res;
s.sprintf("%lg / ",num1);
}
break;
}
if(f != '=')
{
PointNUm = 0;
c = 10;
TempC = f;
IntNum = 0;
num2 = 0;
pl[0].setText(s);
}
return;
}
}
MainInterface::
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
calculator.zip (17个子文件)
calculator
calculator.pro.user 23KB
calculator.pro 1007B
main.cpp 178B
maininterface.cpp 9KB
maininterface.h 1KB
maininterface.ui 541B
Computer_icon.png 963B
build-calculator-Desktop_Qt_5_12_9_GCC_64bit-Debug
calculator 943KB
Makefile 71KB
ui_maininterface.h 1KB
maininterface.o 787KB
main.o 837KB
moc_maininterface.cpp 6KB
.qmake.stash 739B
moc_maininterface.o 676KB
moc_predefs.h 13KB
pb15_icon.png 282B
共 17 条
- 1
资源评论
宇文心钰
- 粉丝: 64
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功