前言:今天使用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. 自测-5 Shuffling Machine

    Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...

  2. Element-ui Theme浅析

    一.浅析 1.采用BEM方式管理类名 B:block,模块,一个块是一个独立的实体,块可以包含其它块,名字单词间用-连接:如一个搜索块: E:element,元素,一个元素是块的一部分,具有某种功能, ...

  3. Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制

    Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...

  4. Python实战之实现简单的购物车系统

    #!usr/bin/env Python3 # -*-coding:utf-8-*- # 程序:购物车程序 # # 需求: # # 启动程序后,让用户输入工资,然后打印商品列表 # 允许用户根据商品编 ...

  5. 1-git初体验

    1 准备工作: windows系统下,安装好msysgit  -安装好后,在开始菜单找到Git  > Git bash 2 当前电脑配置用户名 邮箱 $ git config --global ...

  6. JavaScript--我发现,原来你是这样的JS(四)(看看变量,作用域,垃圾回收机制是啥)

    一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第四篇,是红宝书第四章内容(主要是变量和作用域问题),当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的 ...

  7. CVPixelBuffer的创建 数据填充 以及数据读取

    CVPixelBuffer的创建数据填充以及数据读取 CVPixelBuffer 在音视频编解码以及图像处理过程中应用广泛,有时需要读取内部数据,很少的时候需要自行创建并填充数据,下面简单叙述. 创建 ...

  8. 记一次vscode升级后,格式化Vue出现的问题

    一.VSCode中使用vetur插件格式化vue文件时,stylus代码会自动加上大括号.冒号和分号 本来就是简写比较方便舒服,结果一个格式化回到十年前 解决方案: vscode  文件 ->首 ...

  9. linux 投影仪

    注:文章转自http://goo.gl/aI9Ycd如果侵权,请原作者留言,立即删除 之前在 R219 做 C++ 演講的時候,發現 Ubuntu 沒有辦法使用 VGA 輸出,臨時改用 Windows ...

  10. Python连接SQLite数据库

    SQLite作为一款轻型数据库,管理工具有很多,比如SQLite Expert Professional,很适合用来存储Python网站,爬虫的相关数据,下面列出基本的增删查改操作 读取操作: con ...