前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下。

这里先跟大家说说使用到的函数:

一、槽连接函数

connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数)   //前面我有一篇文章已经介绍过槽函数的使用了,大家有兴趣可以看看,这里就不详细说了。 

二、取出按钮中的字符

QString line = ui->pushButton1->text() //取出按钮pushButton1中的字符存放到line中

三、设置输入框中显示的内容

ui->lineEdit->setText(line); //设置输入框lineEdit中显示的内容,line为要显示的内容

四、清空字符数组

line.clear(); //清空字符数组line中的内容

五、将字符转换成整形、浮点型、数值

double sum = temp1.toDouble() + temp2.toDouble(); //将字符转换成浮点型

六、将整形、浮点型、数值转换成字符

 ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符

七、从字符的最后一位开始往开头的方向按位删除字符

 line.chop(); //尾剔除,即是从字符串后面开始按位删除,每次删除字符数组line中的一位,如果是2则是每次两位,依次类推

下面是头文件widget.h中的代码:

 #ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QString> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); protected slots:
void item0();//
void item1();//
void item2();//
void item3();//
void item4();//
void item5();//
void item6();//
void item7();//
void item8();//
void item9();//
void sub();//减号
void div();//除号
void mul();//乘号
void cancel();//取消
void delet();//尾剔除
void add();//加号
void equal();//等于号
void point();//小数点 private:
Ui::Widget *ui; }; #endif // WIDGET_H

源文件widget.cpp中的代码:

 #include "widget.h"
#include "ui_widget.h"
#include <QString>
#include <QDebug>
#include <stdlib.h>
#include <string.h>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); //连接槽函数
connect(ui->pushButton0,SIGNAL(clicked(bool)),this,SLOT(item0())); //
connect(ui->pushButton1,SIGNAL(clicked(bool)),this,SLOT(item1())); //
connect(ui->pushButton2,SIGNAL(clicked(bool)),this,SLOT(item2())); //
connect(ui->pushButton3,SIGNAL(clicked(bool)),this,SLOT(item3())); //
connect(ui->pushButton4,SIGNAL(clicked(bool)),this,SLOT(item4())); //
connect(ui->pushButton5,SIGNAL(clicked(bool)),this,SLOT(item5())); //
connect(ui->pushButton6,SIGNAL(clicked(bool)),this,SLOT(item6())); //
connect(ui->pushButton7,SIGNAL(clicked(bool)),this,SLOT(item7())); //
connect(ui->pushButton8,SIGNAL(clicked(bool)),this,SLOT(item8())); //
connect(ui->pushButton9,SIGNAL(clicked(bool)),this,SLOT(item9())); // connect(ui->pushButton_c,SIGNAL(clicked(bool)),this,SLOT(cancel()));//取消
connect(ui->pushButton_add,SIGNAL(clicked(bool)),this,SLOT(add()));//加号
connect(ui->pushButton_equal,SIGNAL(clicked(bool)),this,SLOT(equal()));//等于号
connect(ui->pushButton_point,SIGNAL(clicked(bool)),this,SLOT(point()));//小数点
connect(ui->pushButton_div,SIGNAL(clicked(bool)),this,SLOT(div()));//除号
connect(ui->pushButton_sub,SIGNAL(clicked(bool)),this,SLOT(sub()));//减号
connect(ui->pushButton_mul,SIGNAL(clicked(bool)),this,SLOT(mul()));//乘号
connect(ui->pushButton_delete,SIGNAL(clicked(bool)),this,SLOT(delet()));//尾剔除
} QString line;
QString item_0; //
QString item_1; //
QString item_2; //
QString item_3;//
QString item_4;//
QString item_5;//
QString item_6;//
QString item_7;//
QString item_8;//
QString item_9;//
QString temp1,temp2; //临时存放两次输入的要进行计算的项
double sum = ; //计算后的结果
int flag = ,flag1 = ; //flag加号标志,flag1等于号标志
int flag3 = ;//减号标志
int flag4 = ;//乘号标志
int flag5 = ;//除号标志
Widget::~Widget()
{
delete ui;
} void Widget::item0() //
{
item_0 = ui->pushButton0->text(); //获取按键中的字符"0"
line += item_0;//每按一次按键就相加一次按键中的字符"0"
ui->lineEdit->setText(line); //显示到输入条中
} void Widget::item1() //
{
item_1 = ui->pushButton1->text();
line += item_1;
ui->lineEdit->setText(line);
} void Widget::item2() //
{
item_2 = ui->pushButton2->text(); //获取按键中的字符"2"
line += item_2; //每按一次按键就相加一次按键中的字符"2"
ui->lineEdit->setText(line);
} void Widget::item3() //
{
item_3 = ui->pushButton3->text(); //获取按键中的字符"3"
line += item_3; //每按一次按键就相加一次按键中的字符"3"
ui->lineEdit->setText(line);
} void Widget::item4() //
{
item_4 = ui->pushButton4->text();
line += item_4;
ui->lineEdit->setText(line);
} void Widget::item5() //
{
item_5 = ui->pushButton5->text();
line += item_5;
ui->lineEdit->setText(line);
} void Widget::item6() //
{
item_6 = ui->pushButton6->text();
line += item_6;
ui->lineEdit->setText(line);
} void Widget::item7() //
{
item_7 = ui->pushButton7->text();
line += item_7;
ui->lineEdit->setText(line);
} void Widget::item8() //
{
item_8 = ui->pushButton8->text();
line += item_8;
ui->lineEdit->setText(line);
} void Widget::item9() //
{
item_9 = ui->pushButton9->text();
line += item_9;
ui->lineEdit->setText(line);
} void Widget::point() //小数点
{
if(flag1 == ) //没有按等于号按键,说明没有进行运算,所以显示第一次输入的字符串
{
line +=".";
ui->lineEdit->setText(line);
} if(flag1 == ) //按了等于号按键,这时候要显示后面一次输入的字符串
{
line = ui->lineEdit->text();
line += ".";
ui->lineEdit->setText(line);
flag1 = ;
}
} void Widget::delet() //尾剔除
{
line = ui->lineEdit->text(); //获取输入条中的字符
line.chop(); //倒位删除,即是从字符串后面开始按位删除
ui->lineEdit->setText(line);
} void Widget::cancel() //重新置零
{
line.clear();
temp1.clear();
temp2.clear();
sum = ;
flag = ;
flag1 = ;
flag3 = ;
flag4 =;
flag5 = ;
ui->lineEdit->setText(line);//输出0
} void Widget::add() //相加
{
flag = ;
temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
line.clear(); //清空字符数组
ui->lineEdit->setText(line);//显示清空状态
} void Widget::sub() //相减
{
flag3 = ;//按了加号按键就改变状态
temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
line.clear(); //清空字符数组
ui->lineEdit->setText(line);//显示清空状态
} void Widget::div()//除法
{
flag4 = ;//按了加号按键就改变状态
temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
line.clear(); //清空字符数组
ui->lineEdit->setText(line);//显示清空状态
} void Widget::mul()//乘法
{
flag5 = ;//按了加号按键就改变状态
temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
line.clear(); //清空字符数组
ui->lineEdit->setText(line);//显示清空状态
} void Widget::equal() //得出结果
{
flag1 = ; //按一次等于号就改变状态
if(flag == ) //加法
{
temp2 = ui->lineEdit->text();
line.clear(); //清空字符串
sum = temp1.toDouble() + temp2.toDouble(); //将字符转换成浮点型
ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
flag = ; //重新让标志位置零,等待下一次的加法进行
} else if(flag3 == ) //减法
{
temp2 = ui->lineEdit->text();
line.clear(); //清空字符串
ui->lineEdit->setText(line);
sum = temp1.toDouble() - temp2.toDouble(); //将字符转换成浮点型 if(sum == ) //等于0
{
ui->lineEdit->setText("");
}
ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
// qDebug()<<sum;
flag3 = ; //重新让标志位置零,等待下一次的减法进行
} else if(flag4 == ) //除法
{
temp2 = ui->lineEdit->text();
line.clear(); //清空字符串
sum = temp1.toDouble() / temp2.toDouble(); //将字符转换成浮点型
if(temp2 == "") //分母等于0
{
ui->lineEdit->setText("");
}
ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
flag4 = ; //重新让标志位置零,等待下一次的除法进行
} else if(flag5 == ) //乘法
{
temp2 = ui->lineEdit->text();
line.clear(); //清空字符串
sum = temp1.toDouble() * temp2.toDouble(); //将字符转换成浮点型
ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
flag5 = ; //重新让标志位置零,等待下一次的乘法进行
} }

效果图如下:

如果有什么建议或者疑惑的地方可以私聊我。

使用qt制作一个简单的计算器的更多相关文章

  1. qt实现一个简单的计算器

    1.计算器的界面如下图所示 dalog.cpp #include "dialog.h" #include "ui_dialog.h" #include<Q ...

  2. WinForm 制作一个简单的计算器

    namespace WindowsFormsApplication6 { public partial class Form1 : Form { //存储上次点击了什么按钮,0代表什么都没有点击,1代 ...

  3. JS实现一个简单的计算器

    使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择 ...

  4. 实例学习SSIS(一)--制作一个简单的ETL包

    原文:实例学习SSIS(一)--制作一个简单的ETL包 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SS ...

  5. TensorFlow练习13: 制作一个简单的聊天机器人

    现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...

  6. Android下实现一个简单的计算器源码

    下面的内容是关于Android下实现一个简单的计算器的内容. import android.app.Activity; import android.os.Bundle;import android. ...

  7. 手把手制作一个简单的IDEA插件(环境搭建Demo篇)

    新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...

  8. PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例

    前言: 1.关于PureMVC: MVC框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了.嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西 ...

  9. 如何使用AEditor制作一个简单的H5交互页demo

    转载自:http://www.alloyteam.com/2015/06/h5-jiao-hu-ye-bian-ji-qi-aeditor-jie-shao/ 本教程演示如何使用AEditor制作一个 ...

随机推荐

  1. 常见SQL分页方式效率比较

    结一下. 1.创建测试环境,(插入100万条数据大概耗时5分钟). ,) ) )) ),end 2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据. id id ...

  2. FPGA在电平接口领域的应用

    电子技术的发展,产生了各种各样的电平接口. TTL电平: TTL电平信号之所以被广泛使用,原因是因为:通常我们采用二进制来表示数据.而且规定,+5V等价于逻辑"1",0V等价于逻辑 ...

  3. 基于java的后台截图功能的实现

    Java后台截图功能的实现 背景介绍: 在近期开发的可视化二期项目中的邮件项目中,邮件中的正文中含有图片.该图片的产生是将一些html网页转为图片格式,刚开始考虑使用第三方组件库html2image和 ...

  4. 让EditPlus支持SQL高亮提示

    将文件放在一个确定的位置,不要放在桌面这些临时位置.然后在 EditPlus 的菜单栏选择 工具(T) -> 配置用户工具(C) 选择左边"类别"中的 文件 -> 设置 ...

  5. 使用IGP和BGP的配合达到降低路由容量目的的实验与总结

    概述 1.先说结论,通过eBGP协议,可以显著降低对非核心路由器的路由容量要求,因为核心路由器的数量明显少于非核心路由器,所以,通过此措施即联通网络,又降低设备要求,非常适宜大型网络. 2.因为网络规 ...

  6. css系列教程1-选择器全解

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css系列教程1-选择器全解 css系列教程2-样式操作全解 css选择器全解: css选择器包括:基本选择器.属性选择器.伪类选择器.伪元 ...

  7. px转vw和vh的工具(对前端同学有用)

    CSS3中有两个新尺寸单位vw和vh, 这两个单位非常适合于开发移动端自适应页面. 假如说有一个设计师做了一张1136x750px的页面,这长页面是针对iPhone6的屏幕设计的. 前端开发工程师将这 ...

  8. es6的箭头函数

    1.使用语法 : 参数 => 函数语句; 分为以下几种形式 : (1) ()=>语句 (  )=> statement 这是一种简写方法省略了花括号和return 相当于 ()=&g ...

  9. 【转载】quickLayout.css-快速构建结构兼容的web页面

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=4 ...

  10. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...