Qt+C++桌面计算器源码

 程序示例精选

Qt+C++桌面计算器源码

如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对<<Qt+C++桌面计算器源码>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


文章目录

一、所需工具软件

二、使用步骤

1. 引入库

2. 主要代码

3. 运行结果

三、在线协助

一、所需工具软件

1. VS, Qt

2. C++

二、使用步骤

1.引入库

代码如下(示例):


#include <QDebug>
#include <iostream>
#include <cmath>
#include <QChar>
#include <QDialog>
#include <QFile>

2.主要代码

代码如下(示例):


void MainWindow::Calc_Suffix()
{
  for(int i=0;i<out.size();i++)
  {
      bool is_Num =true;
      out[i].toDouble(&is_Num);
      if(is_Num)//如果是数字,直接入栈
      {
          s2.push(out[i].toDouble(&is_Num));
      }
      else if(out[i]=='s'||out[i]=='c'||out[i]=='t'||out[i]=='^')
      {
          double x=s2.pop();
          if(out[i]=='s')
              x=sin(x);
          else if(out[i]=='c')
              x=cos(x);
          else if(out[i]=='t')
              x=tan(x);
          else if(out[i]=='l')
              x=log(x);
          else if(out[i]=='^')
          {
              int y=x;
              x=s2.pop();
              int z=x;
              for(int j=1;j<y;j++)
                  x=x*z;
          }
          s2.push(x);
      }
      else if(out[i]=="+"||out[i]=="-"||out[i]=="*"||out[i]=="/")//如果是运算符,弹栈两次,并进行运算,运算后,结果入栈
      {
          double x=s2.pop();
          double y=s2.pop();
          if(out[i]=="+")
          {
              s2.push(y+x);
          }else if(out[i]=="-"){
              s2.push(y-x);
          }else if(out[i]=="*"){
              s2.push(y*x);
          }else if(out[i]=="/"){
              s2.push(y/x);
          }
      }
  }
  result = s2.pop();
  qDebug()<<result;
}

void MainWindow::m_init()
{
    ba.clear();
    out.clear();
}

void MainWindow::on_pushButton_clicked()
{
    in=ui->lineEdit->text();//获取表达式
    getChar();
    getSuffix();
    Calc_Suffix();
    ui->lineEdit->clear();//清空文本编辑框
    ui->lineEdit->setText(QString("%1%2").arg('=').arg(result));//显示结果
    m_init();
}

void MainWindow::on_pushButton_2_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(0));
}

void MainWindow::on_pushButton_3_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(1));
}

void MainWindow::on_pushButton_4_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(2));
}

void MainWindow::on_pushButton_5_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(3));
}

void MainWindow::on_pushButton_6_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(4));
}

void MainWindow::on_pushButton_7_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(5));
}

void MainWindow::on_pushButton_8_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(6));
}

void MainWindow::on_pushButton_9_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(7));
}

void MainWindow::on_pushButton_10_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(8));
}

void MainWindow::on_pushButton_11_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(9));
}

void MainWindow::on_pushButton_12_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("+"));
}

void MainWindow::on_pushButton_13_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("-"));
}

void MainWindow::on_pushButton_14_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("*"));
}

void MainWindow::on_pushButton_15_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("/"));
}

void MainWindow::on_pushButton_20_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("."));
}

void MainWindow::on_pushButton_18_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("("));
}

void MainWindow::on_pushButton_19_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg(")"));
}

void MainWindow::on_pushButton_16_clicked()
{
    //清空所有内容,并初始化
    ui->lineEdit->clear();
    m_init();
}

void MainWindow::on_pushButton_17_clicked()
{
    //退格删除一个字符
    ui->lineEdit->backspace();
}

void MainWindow::on_pushButton_21_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("sin"));
}

void MainWindow::on_pushButton_22_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("cos"));
}

void MainWindow::on_pushButton_23_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("tan"));
}

void MainWindow::on_pushButton_24_clicked()//最小公倍数,c_mul
{
    QString str=ui->lineEdit->text();
    QString l1="0",l2="0";
    QByteArray yue = str.toLatin1();
    bool hasSpace = false;
    QString c_div="1";
    int max_yue;
    for(int i=0;i<yue.size();i++)
    {
         char x=yue[i];
         if(x=='.')
            hasSpace=true;
         else if(x!='.'&&hasSpace)
            l2+=QString(x);
         else
            l1+=QString(x);
    }
    int s1=l1.toInt(nullptr,10);
    int s2=l2.toInt(nullptr,10);
    int max;
    if(s1>s2)
        max=s1;
    else
        max=s2;
    for(int j=2;j<max;j++)
    {
        if(s1 % j==0&&s2%j==0)
      {
            max_yue=j;
      }
    }
    int z=s1*s2/max_yue;
    QString c_mul=QString::number(z);
    ui->lineEdit->setText(c_mul);
}

void MainWindow::on_pushButton_25_clicked()//公约数,两个数以小数点分格
{
    QString str=ui->lineEdit->text();
    QString l1="0",l2="0";
    QByteArray yue = str.toLatin1();
    bool hasSpace = false;
    QString c_div="1";
    for(int i=0;i<yue.size();i++)
    {
         char x=yue[i];
         if(x=='.')
            hasSpace=true;
         else if(x!='.'&&hasSpace)
            l2+=QString(x);
         else
            l1+=QString(x);
    }
    int s1=l1.toInt(nullptr,10);
    int s2=l2.toInt(nullptr,10);
    int max;
    if(s1>s2)
        max=s1;
    else
        max=s2;
    for(int j=2;j<max;j++)
    {
        if(s1 % j==0&&s2%j==0)
      {
            c_div+="*";
            c_div+=QString::number(j);
      }
    }
    ui->lineEdit->setText(c_div);
}

void MainWindow::on_pushButton_26_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("^"));
}

void MainWindow::on_pushButton_27_clicked()
{
    QString str=ui->lineEdit->text();
    ui->lineEdit->setText(QString("%1%2").arg(str).arg("log"));
}


3.参数定义

代码如下(示例):


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default='yolov5_best_road_crack_recog.pt', help='model.pt path(s)')
    parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')
    parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
    parser.add_argument('--view-img', action='store_true', help='display results')
    parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')
    parser.add_argument('--classes', nargs='+', type=int, default='0', help='filter by class: --class 0, or --class 0 2 3')
    parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
    parser.add_argument('--augment', action='store_true', help='augmented inference')
    parser.add_argument('--update', action='store_true', help='update all models')
    parser.add_argument('--project', default='runs/detect', help='save results to project/name')
    parser.add_argument('--name', default='exp', help='save results to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    opt = parser.parse_args()
    

3.运行结果如下

 

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!
1)远程安装运行环境,代码调试
2)Qt, C++, Python入门指导
3)界面美化
4)软件制作

 当前文章连接:https://blog.csdn.net/alicema1111/article/details/132608892

博主推荐文章:python人脸识别统计人数qt窗体-CSDN博客

博主推荐文章:Python Yolov5火焰烟雾识别源码分享-CSDN博客

                         Python OpenCV识别行人入口进出人数统计_python识别人数-CSDN博客

个人博客主页:alicema1111的博客_CSDN博客-Python,C++,网页领域博主

博主所有文章点这里alicema1111的博客_CSDN博客-Python,C++,网页领域博主

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Qt/C++制作一个计算器,首先需要使用Qt编程环境,可以下载并安装Qt Creator。然后按照以下步骤进行计算器的制作: 1. 创建一个新的Qt项目,选择C++窗口应用程序。 2. 在项目中创建主窗口界面,添加需要的按钮、文本框和布局。 3. 给每个按钮添加槽函数,用于处理按钮的点击事件。 4. 在槽函数中根据按钮的不同进行相应的计算操作。 5. 使用Qt的信号与槽机制,将按钮的点击信号与对应的槽函数连接起来。 6. 设置按钮的样式和布局,使其看起来像一个计算器界面。 7. 在主窗口类中添加实现计算逻辑的函数,例如计算加减乘除等操作。 8. 在界面上的文本框中显示计算结果。 例如,对于"加"按钮的槽函数可以这样实现: ``` void MainWindow::on_addButton_clicked() { QString num1Str = ui->num1LineEdit->text(); // 获取第一个数字的文本 QString num2Str = ui->num2LineEdit->text(); // 获取第二个数字的文本 double num1 = num1Str.toDouble(); // 将文本转换为数字 double num2 = num2Str.toDouble(); double result = num1 + num2; // 执行加法运算 QString resultStr = QString::number(result); // 将结果转换为字符串 ui->resultLineEdit->setText(resultStr); // 在结果文本框中显示结果 } ``` 通过类似的方式,可以为其他按钮添加对应的槽函数,实现计算器的各种功能。完成后,可以编译并运行这个Qt/C++计算器项目,即可看到制作好的计算器界面并进行计算操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷塘月色2

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值