QT-计算器

news2024/11/29 0:30:03

QT-计算器

  • 一、演示效果
  • 二、关键程序
  • 三、下载链接

一、演示效果

在这里插入图片描述

二、关键程序

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //基本設置
    ui->label->setStyleSheet("QLabel { background-color : white;font-size:40px ;}");
    ui->label->setAlignment(Qt::AlignRight|Qt::AlignCenter);
    this->setFixedSize(QSize(487,594));
    this->setWindowTitle(u8"计算器");

    //連接數字0-9
    connect(ui->btn_0,&QPushButton::clicked,[=](){
        QString str=ui->label->text();
        str.push_back("0");
        ui->label->setText(str);
    });
    connect(ui->btn_1,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"1";
        ui->label->setText(str);

    });
    connect(ui->btn_2,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"2";
        ui->label->setText(str);

    });
    connect(ui->btn_3,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"3";
        ui->label->setText(str);

    });
    connect(ui->btn_4,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"4";
        ui->label->setText(str);

    });
    connect(ui->btn_5,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"5";
        ui->label->setText(str);

    });
    connect(ui->btn_6,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"6";
        ui->label->setText(str);

    });
    connect(ui->btn_7,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"7";
        ui->label->setText(str);

    });
    connect(ui->btn_8,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"8";
        ui->label->setText(str);

    });
    connect(ui->btn_9,&QPushButton::clicked,[=](){
        QString str=ui->label->text()+"9";
        ui->label->setText(str);

    });
    //連接 .
    connect(ui->btn_point,&QPushButton::clicked,[=](){
        QString oldStr = ui->label->text();
        //限制只能有一個.
        int pointNum = oldStr.count(".");
        if(oldStr == ""||pointNum==1){
            return;
        }
        QString newStr=oldStr+".";
        ui->label->setText(newStr);


    });
    //連接<-
    connect(ui->btn_back,&QPushButton::clicked,[=](){
        QString oldStr = ui->label->text();
        if(oldStr == ""){
            return;
        }
        QString newStr = oldStr.remove(-1,1);
        ui->label->setText(newStr);

    });
    //連接 +
    connect(ui->btn_add,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double value = ui->label->text().toDouble();
        Value val("+",value);
        this->allValueAndOperator.push_back(val);
        ui->label->setText("");
    });
    //連接 -
    connect(ui->btn_minus,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double value = ui->label->text().toDouble();
        Value val("-",value);
        this->allValueAndOperator.push_back(val);
        ui->label->setText("");
    });
    //連接 *
    connect(ui->btn_multiply,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double value = ui->label->text().toDouble();
        Value val("*",value);
        this->allValueAndOperator.push_back(val);
        ui->label->setText("");
    });
    //連接 /
    connect(ui->btn_divided,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double value = ui->label->text().toDouble();
        Value val("/",value);
        this->allValueAndOperator.push_back(val);
        ui->label->setText("");
    });
     //連接 =
    connect(ui->btn_equals,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double value = ui->label->text().toDouble();
        Value val("!",value);
        this->allValueAndOperator.push_back(val);

        QVector<Value>::iterator it = this->allValueAndOperator.begin();
        double res = it->value;
        for(;it!=this->allValueAndOperator.end();it++){

           double val = (it+1)->value;

           if(it->oper=="+"){
               res+=val;

           }else if(it->oper=="-"){
               res-=val;

           }else if(it->oper=="*"){
               res*=val;

           }else if(it->oper=="/"){
               res/=val;

           }
           if((it+1)->oper=="!")break;
        }
        ui->label->setNum(res);
        this->allValueAndOperator.clear();
    });
    //連接 clear
    connect(ui->btn_clear,&QPushButton::clicked,[=](){
        this->allValueAndOperator.clear();
        ui->label->setText("");
    });
    //連接 退出
    connect(ui->btn_close,&QPushButton::clicked,[=](){
        this->close();
    });
    //連接 +/-
    connect(ui->btn_strains,&QPushButton::clicked,[=](){
        if(ui->label->text()==""){
            return;
        }
        double val=ui->label->text().toDouble();
        val=-val;

        ui->label->setText(QString::number(val));
    });






}

MainWindow::~MainWindow()
{
    delete ui;
}



三、下载链接

https://download.csdn.net/download/u013083044/89652298

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式事务:基本概念

文章目录 一、基础概念1、什么是事务2、本地事务3 、分布式事务4、分布式事务产生的场景 二、分布式事务基础理论1、CAP理论&#xff08;1&#xff09;理解CAP&#xff08;2&#xff09;CAP组合方式&#xff08;3&#xff09;总结 2、BASE理论 三、分布式事务解决方案之2PC&…

【Java日志系列】Logback日志框架

目录 前言 一、Logback简介 二、Logback组件 三、快速入门 四、配置文件的使用 1. 配置文件中的标签 1.1 logger标签 1.2 root标签 1.3 appender标签 1.4 filter标签 1.5 encoder标签 1.6 property标签 2. 常见的Appender 2.1 ConsoleAppender 2.2 FileAppender…

瓜子二手车源码开发

瓜子二手车作为国内知名的二手车交易平台&#xff0c;其开发需求与功能架构主要围绕提升用户体验、保障交易安全、优化交易流程以及提供全面服务等方面展开。以下是对瓜子二手车开发需求与功能架构的详细分析 一、开发需求 用户需求&#xff1a; 便捷性&#xff1a;用户希望能…

ReTagList标签列表(API)

组件实现基于 Vue3 + Element Plus + Typescript,同时引用 vueUse + lodash-es + tailwindCss (不影响功能,可忽略) 基于ElTag实现的Tag列表,支持Tag列表多选,动态Tag列表 ReTagList标签列表 基础 简单展示Tag列表,可通过size指定尺寸 查看 /demo/tag-list/basic.md …

叉车门口拐角盲区防撞系统,精准微波距离测距,助力企业安全生产

叉车流动性强、作业场所不固定&#xff0c;是特种设备管理的薄弱环节。如何管住叉车、管好叉车&#xff0c;保障作业人员安全一直都是重点话题&#xff0c;引入智慧叉车&#xff0c;使用智能化监管&#xff0c;很多城市相继开展智慧叉车试点工作&#xff0c;给叉车装上“智慧大…

机械学习—零基础学习日志(如何理解概率论4)

当已知一个概率&#xff0c;求解另外一个函数的概率。以下是离散型的概率计算方法。 这里是连续型的&#xff0c;已知概念密度&#xff0c;计算对应的另外一个函数的概率。 这里需要求解对应的原始函数。 这里我们做一道练习题。 《概率论与数理统计期末不挂科|考研零基础入门…

精选这五款热门好用的骨传导耳机,帮你避免踩坑的麻烦!

相信大家都已经深有体会&#xff0c;拿那种常规的入耳式无线蓝牙耳机来做运动耳机&#xff0c;很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机&#xff0c;虽然简单轻巧&#xff0c;但也是入耳式设计&#xff0c;长时间佩戴耳朵不舒服。这样看来&#xff0c;运…

科普篇 | 如何查找参考基因组信息

前 言 很多老师会发现&#xff0c;高通量测序后需要生信分析的过程中&#xff0c;需要填写一个信息分析表。而信息分析表中有一个对生信分析很重要的信息——基因组文件及注释文件。通常这类文件我们都是需要老师提供对应的下载链接&#xff0c;以便于生信直接利用这个链接去…

Git介绍及配置

目录 Git GitHub GitLab Gitee 配置Git 安装git 初次运行 Git 前的配置 注册一个代码托管平台 用户信息 获取 Git 仓库 初始化仓库 克隆现有的仓库 https方式&#xff1a; ssh方式&#xff1a; 上传本地项目至Git仓库 https方式 ssh-key方式 添加个人公钥​ …

【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【Redis】Redis 底层的数据结构(结合源码)

众所周知&#xff0c;Redis 是一个高性能的开源内存数据库&#xff0c;支持多种数据结构&#xff08;如字符串、哈希、列表和集合&#xff09;&#xff0c;提供持久化选项以确保数据安全&#xff0c;并具备高可用性和分布式功能。 下面我们就来了解一下其底层所使用到的数据结…

包装类和简单泛型

一、包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 注意&#xff1a;除了 Integer 和 Character&#xff0c; 其余基本类型的…

微信怎么恢复好友?找回失联好友,5个有效方法奉上!

微信&#xff0c;这个我们日常沟通不可或缺的工具&#xff0c;但有时会因为一些小疏忽&#xff0c;让我们不小心与好友失去了联系。可能是误删了好友&#xff0c;也可能是换了手机没来得及备份&#xff0c;导致那些熟悉的面孔从列表中消失。 那么&#xff0c;微信怎么恢复好友…

软件设计师全套备考系列文章9 -- 算法设计与分析

软考-- 软件设计师&#xff08;9&#xff09;-- 算法设计与分析 文章目录 软考-- 软件设计师&#xff08;9&#xff09;-- 算法设计与分析前言一、章节考点二、分治法三、回溯法四、贪心法五、动态规划法 前言 考试时间&#xff1a;每年5月、11月&#xff0c;软件设计师每年都…

当《黑神话:悟空》中的天命人,被AI换脸成老外…

前言 挡不住&#xff0c;根本挡不住&#xff01; 《黑神话&#xff1a;悟空》&#xff0c;这款由游戏科学公司制作的&#xff0c; 以中国神话为背景的角色扮演游戏&#xff0c;8月20日一上线&#xff0c; 就连续霸榜Steam、WeGame 等平台销量榜首&#xff0c; 肉饼的朋友圈…

软件测试学习笔记丨多表查询及子查询

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/31940 一、多表简介 定义&#xff1a;结合两个或多个表来执行SQL数据库操作&#xff0c;这通常涉及到一个或多个表的关联&#xff0c;基于某些共享的列&#xff08;通常是键&#xff09;之间…

C++面试基础系列-polymorphic多态性

系列文章目录 文章目录 系列文章目录C面试基础系列-polymorphic多态性Overview1.polymorphic多态性2.编译时多态的实现示例代码&#xff1a;函数重载示例&#xff1a;运算符重载示例&#xff1a;模板示例&#xff1a; 3.运行时多态的实现示例代码 4.编译时多态的优点关于作者 C…

高校考勤小程序的设计与实现---附源码131039

摘 要 随着计算机的发展及网络技术的应用&#xff0c;当今社会正快速向信息自动化社会前进&#xff0c;信息自动化的作用也闲的的尤为重要&#xff0c;特别是各行业的管理领域&#xff0c;智能化信息处理已是提高效率、规范管理、客观审查的最有效方法。近年来&#xff0c;随着…

双模显示器是什么?原来是可变化的显示屏

随着科技的进步和人们对高品质视觉体验需求的增加&#xff0c;显示技术正在经历一场深刻的变革。近年来&#xff0c;双模显示器逐渐引起了广泛关注&#xff0c;成为显示器设计的新趋势。那么什么是双模显示器呢&#xff1f;它都有哪些优势&#xff1f;下面就一起来了解一下。 …

C++学习笔记----4、用C++进行程序设计(三)---- 类间关系

作为一名程序员&#xff0c;会不可避免地碰到不同的类具有相同的特点&#xff0c;或者看起来相互之间有一定的关系。面向对象的编程语言提供许多技术来处理类间的这种关系。比较令人迷惑的部分就是理解 这些关系到底是什么&#xff1f;有两种主要的类间关系--复合关系&#xff…