我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Qt实现制作简单的计算器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Qt实现制作简单的计算器

前言

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

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

1、槽连接函数

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

2、取出按钮中的字符

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

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

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

4、清空字符数组

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

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

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

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

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

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

 line.chop(1); //尾剔除,即是从字符串后面开始按位删除,每次删除字符数组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 = 0);
    ~Widget();

protected slots:
    void item0();//0
    void item1();//1
    void item2();//2
    void item3();//3
    void item4();//4
    void item5();//5
    void item6();//6
    void item7();//7
    void item8();//8
    void item9();//9
    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())); //0
    connect(ui->pushButton1,SIGNAL(clicked(bool)),this,SLOT(item1())); //1
    connect(ui->pushButton2,SIGNAL(clicked(bool)),this,SLOT(item2())); //2
    connect(ui->pushButton3,SIGNAL(clicked(bool)),this,SLOT(item3())); //3
    connect(ui->pushButton4,SIGNAL(clicked(bool)),this,SLOT(item4())); //4
    connect(ui->pushButton5,SIGNAL(clicked(bool)),this,SLOT(item5())); //5
    connect(ui->pushButton6,SIGNAL(clicked(bool)),this,SLOT(item6())); //6
    connect(ui->pushButton7,SIGNAL(clicked(bool)),this,SLOT(item7())); //7
    connect(ui->pushButton8,SIGNAL(clicked(bool)),this,SLOT(item8())); //8
    connect(ui->pushButton9,SIGNAL(clicked(bool)),this,SLOT(item9())); //9

    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; //0
QString item_1; //1
QString item_2; //2
QString item_3;//3
QString item_4;//4
QString item_5;//5
QString item_6;//6
QString item_7;//7
QString item_8;//8
QString item_9;//9
QString temp1,temp2; //临时存放两次输入的要进行计算的项
double sum = 0;  //计算后的结果
int flag = 0,flag1 = 0; //flag加号标志,flag1等于号标志
int flag3 = 0;//减号标志
int flag4 = 0;//乘号标志
int flag5 = 0;//除号标志
Widget::~Widget()
{
    delete ui;
}

void Widget::item0() //0
{
    item_0 = ui->pushButton0->text(); //获取按键中的字符"0"
    line += item_0;//每按一次按键就相加一次按键中的字符"0"
    ui->lineEdit->setText(line); //显示到输入条中
}

void Widget::item1() //1
{
    item_1 = ui->pushButton1->text();
    line += item_1;
    ui->lineEdit->setText(line);
}

void Widget::item2() //2
{
   item_2 = ui->pushButton2->text(); //获取按键中的字符"2"
   line += item_2; //每按一次按键就相加一次按键中的字符"2"
   ui->lineEdit->setText(line);
}


void Widget::item3() //3
{
   item_3 = ui->pushButton3->text(); //获取按键中的字符"3"
   line += item_3; //每按一次按键就相加一次按键中的字符"3"
   ui->lineEdit->setText(line);
}

void Widget::item4() //4
{
    item_4 = ui->pushButton4->text();
    line += item_4;
    ui->lineEdit->setText(line);
}

void Widget::item5() //5
{
    item_5 = ui->pushButton5->text();
    line += item_5;
    ui->lineEdit->setText(line);
}

void Widget::item6() //6
{
    item_6 = ui->pushButton6->text();
    line += item_6;
    ui->lineEdit->setText(line);
}

void Widget::item7() //7
{
    item_7 = ui->pushButton7->text();
    line += item_7;
    ui->lineEdit->setText(line);
}

void Widget::item8() //8
{
    item_8 = ui->pushButton8->text();
    line += item_8;
    ui->lineEdit->setText(line);
}

void Widget::item9() //9
{
    item_9 = ui->pushButton9->text();
    line += item_9;
    ui->lineEdit->setText(line);
}


void Widget::point() //小数点
{
    if(flag1 == 0) //没有按等于号按键,说明没有进行运算,所以显示第一次输入的字符串
    {
        line +=".";
        ui->lineEdit->setText(line);
    }

    if(flag1 == 1) //按了等于号按键,这时候要显示后面一次输入的字符串
    {
        line  = ui->lineEdit->text();
        line += ".";
        ui->lineEdit->setText(line);
        flag1 = 0;
    }
}


void Widget::delet() //尾剔除
{
    line = ui->lineEdit->text(); //获取输入条中的字符
    line.chop(1); //倒位删除,即是从字符串后面开始按位删除
    ui->lineEdit->setText(line);
}

void Widget::cancel() //重新置零
{
   line.clear();
   temp1.clear();
   temp2.clear();
   sum = 0;
   flag = 0;
   flag1 = 0;
   flag3 = 0;
   flag4 =0;
   flag5 = 0;
   ui->lineEdit->setText(line);//输出0
}

void Widget::add() //相加
{
    flag = 1;
    temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
    line.clear(); //清空字符数组
    ui->lineEdit->setText(line);//显示清空状态
}

void Widget::sub() //相减
{
    flag3 = 1;//按了加号按键就改变状态
    temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
    line.clear(); //清空字符数组
    ui->lineEdit->setText(line);//显示清空状态
}

void Widget::div()//除法
{
    flag4 = 1;//按了加号按键就改变状态
    temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
    line.clear(); //清空字符数组
    ui->lineEdit->setText(line);//显示清空状态
}


void Widget::mul()//乘法
{
    flag5 = 1;//按了加号按键就改变状态
    temp1 = ui->lineEdit->text(); //获取前面输入的字符,并临时保存起来
    line.clear(); //清空字符数组
    ui->lineEdit->setText(line);//显示清空状态
}

void Widget::equal() //得出结果
{
    flag1 = 1; //按一次等于号就改变状态
    if(flag == 1) //加法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() + temp2.toDouble(); //将字符转换成浮点型
        ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
        flag = 0; //重新让标志位置零,等待下一次的加法进行
    }

    else if(flag3 == 1) //减法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        ui->lineEdit->setText(line);
        sum = temp1.toDouble() - temp2.toDouble(); //将字符转换成浮点型

        if(sum == 0) //等于0
        {
            ui->lineEdit->setText("0");
        }
        ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
            // qDebug()<<sum;
        flag3 = 0; //重新让标志位置零,等待下一次的减法进行
    }

    else if(flag4 == 1) //除法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() / temp2.toDouble(); //将字符转换成浮点型
        if(temp2 == "0") //分母等于0
        {
            ui->lineEdit->setText("0");
        }
        ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
        flag4 = 0; //重新让标志位置零,等待下一次的除法进行
    }

   else if(flag5 == 1) //乘法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() * temp2.toDouble(); //将字符转换成浮点型
        ui->lineEdit->setText(QString::number(sum)); //将浮点型转换成字符
        flag5 = 0; //重新让标志位置零,等待下一次的乘法进行
    }

}

效果图

效果图如下:

到此这篇关于Qt实现制作简单的计算器的文章就介绍到这了,更多相关Qt计算器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Qt实现制作简单的计算器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Qt实现制作简单的计算器

计算器是我们生活中很常见的东西,它可以由多种语言多种方式来实现。本文主要介绍的是利用Qt实现的简易计算器的制作,文中的示例代码讲解详细,需要的可以参考一下
2022-12-19

怎么使用Qt制作简单的计算器

这篇文章主要讲解了“怎么使用Qt制作简单的计算器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Qt制作简单的计算器”吧!前言这里先跟大家说说使用到的函数:1、槽连接函数connect
2023-07-04

Qt实现可以计算大数的简单计算器

计算器是我们生活中很常见的东西,它可以由多种语言多种方式来实现。本文主要介绍的是基于C++语言,由QT实现的可以计算大数的简单计算器,需要的可以参考一下
2022-12-12

QT如何实现简单计算器功能

这篇文章主要讲解了“QT如何实现简单计算器功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“QT如何实现简单计算器功能”吧!效果图:新建工程,创建类MainWindow,基类是QMainWi
2023-06-30

JavaScript制作简单网页计算器

这篇文章主要为大家详细介绍了JavaScript制作简单网页计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

QT+OpenGL实现简单图形的绘制

这篇文章主要为大家详细介绍了如何利用QT和OpenGL实现简单图形的绘制,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2022-12-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录