前言:今天使用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. Dice (II) (DP)唉,当时没做出来

    Dice (II) Time Limit: 3000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu [Submit]   [ ...

  2. “一切都是消息”--MSF(消息服务框架)之【发布-订阅】模式

    在上一篇,“一切都是消息”--MSF(消息服务框架)之[请求-响应]模式 ,我们演示了MSF实现简单的请求-响应模式的示例,今天来看看如何实现[发布-订阅]模式.简单来说,该模式的工作过程是: 客户端 ...

  3. git 忽略文件夹

    $ vim .gitignore 添加要忽略的文件或文件夹 esc + :wq 退出vim命令行

  4. java课程作业--动手动脑

    随机数: 1)编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231 ...

  5. OpenGL ES2.0光照

    一.简单光照原理 平行光(正常光) 光照效果=   环境颜色 + 漫反射颜色 + 镜面反射颜色 点光源 光照效果=   环境颜色 + (漫反射颜色 + 镜面反射颜色)× 衰减因子 聚光灯 光照效果= ...

  6. NDK Jni 开发(1)

    1. 学习地址 http://my.oschina.net/lifj/blog/177087 http://www.cnblogs.com/devinzhang/archive/2012/02/29/ ...

  7. MVC.NET 发布后,部署到iis ,网站中的Bootstrap的字体图标不能正常显示

    时隔多日没有在博客中记录自己遇到的问题及解决方案了 ,今天给大家分享一个可能会遇到的一个鸡肋bug ! 如果你的项目是MVC并且在项目中引用了 Boostrap 框架,你在编辑发布后部署到iis的时候 ...

  8. 深入浅出 SpringMVC - 2 提升篇

    前言: 本篇笔记是继 深入浅出 SpringMVC - 1 后的续篇,主要介绍了 SpringMVC 的实际小应用,包括 SpringMVC 的数据格式化.使用 JSR 303 验证标准 在 Spri ...

  9. win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock

    我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...

  10. 数据挖掘 ID3

    本文讲的是数据挖掘中的ID3,这个有很多人做了,我也没有说什么改善,只是要考试,用我考试记录的来写,具有很大主观性,如果看到有觉得不对或感觉不好,请关掉浏览器或和我说,请不要生气或发不良的言论. 决策 ...