基于Qt5.4.1 c++计算器案例

基于Qt5.4.1 c++简易计算器案例

**简易计算器 无连加连减功能 可以退格 和小数运算
功能可以分成下列模块:

  • 界面-表达式输入框
  • 界面-数字与运算符面板
  • 界面 -运算过程 与栈中数据变化显示
  • 界面-切换显示(结果和运算过程)
  • 计算-输入的数字的数字类型是字符串类型 转换成数字
  • 计算-使用switch判断计算符号
  • 计算-退格即删除字符串最后一位

效果图如下:**
在这里插入图片描述首先我们需要在.h文件中 定义很多的private变量
例如:输入1+2
num1中存储1 num2存储2
show_num=“1+2”显示出来
输入符号后 改变judge的值 使程序知道再输入的数字属于第二个数字

    QString show_num;
    QString num1,num2;//储存输入的第一个和第二个数值
    bool judge;//判断第一个数是否输入完毕
    char flag;//标记符号

如下是按键0被按下
如果judge为真 0加在字符串num1后
如果为假 0加在字符串num2后
改变show_num显示

void MainWindow::on_pushButton_0_clicked()
{
   
    if(judge){
   
        num1+="0";
      }else num2+="0";
   show_num=show_num+"0";
   ui->label_show->setText(show_num);

}
**同理 如下是按键1被按下** 
```cpp
void MainWindow::on_pushButton_1_clicked()
{
   
    if(judge){
   
        num1+="1";
      }else num2+="1";
    show_num=show_num+"1";
    ui->label_show->setText(show_num);

}
**同理 小数点写法和数字一样 加在字符串后即可**
```cpp
void MainWindow::on_pushButton_clicked()
{
   
    if(judge){
   
        num1+=".";
      }else num2+=".";
    show_num=show_num+".";
    ui->label_show->setText(show_num);
}

根据不同的符号 进行不同的运算 并且修改show_num的值(显示结果)

void MainWindow::on_pushButton_equal_clicked()
{
   
    qDebug() << num1<< flag<< num2;
    switch(flag){
   
    case'+':show_num=show_num+"="+QString::number(num1.toDouble()+num2.toDouble());break;
    case'-':show_num=show_num+"="+QString::number(num1.toDouble()-num2.toDouble());break;
    case'*':show_num=show_num+"="+QString::number(num1.toDouble()*num2.toDouble());break;
    case'/':show_num=show_num+"="+QString::number(num1.toDouble()/num2.toDouble());break;
    default:break;
    }
    ui->label_show->setText(show_num);
}


```cpp

退格功能
首先需要清空显示 num1 num2赋值为空
judge赋值为真 表示将来输入的数字是第一个数

void MainWindow::on_pushButton_AC_clicked()
{
   
    show_num=' ';
    QString i;
    num1=i;
    num2=i;
    judge=true;
    ui->label_show->setText("");

}

window.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <vector>

using namespace std;

namespace Ui {
   
class MainWindow;
}

class MainWindow : public QMainWindow
{
   
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:

    void on_pushButton_0_clicked();

    void on_pushButton_1_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_add_clicked();

    void on_pushButton_del_clicked();

    void on_pushButton_multiply_clicked();

    void on_pushButton_division_clicked();

    void on_pushButton_equal_clicked();

    void on_pushButton_AC_clicked();

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QString show_num;
    QString num1,num2;//储存输入的第一个和第二个数值
    bool judge;//判断第一个数是否输入完毕
    char flag;//标记符号
};

#endif // MAINWINDOW_H

mian.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cstdio>
#include <stdio.h>
#include <qdebug.h>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
   
    ui->setupUi(this);
    show_num="";
}

MainWindow::~MainWindow()
{
   
    delete ui;
    judge=true;//判断的初值给true
}


void MainWindow::on_pushButton_0_clicked()
{
   
    if(judge){
   
        num1+="0";
      }else num2+="0";
   show_num=show_num+"0";
   ui->label_show->setText(show_num);

}

void MainWindow::on_pushButton_1_clicked()
{
   
    if(judge){
   
        num1+="1";
      }else num2+="1";
    show_num=show_num+"1";
    ui->label_show-
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值