qt 计算器实现(中缀转后缀,后缀计算)

本文介绍如何利用Qt框架设计一个计算器应用,重点在于实现中缀表达式到后缀表达式的转换,并进行后缀表达式的计算。文章通过展示计算器的界面设计和各个按钮的功能,阐述了计算器的工作原理。
摘要由CSDN通过智能技术生成

我先把界面贴出来


界面就是这样子的,当然也可以不是这样子的,自己设计,怎么好看怎么来

我来简介下按钮的对象 0到9 就是

pushButton9,
pushButton8等等
我先把界面的代码贴出来
其实蛮简单的,就是让其生成正确的中缀,然后进行中缀转后缀处理。
关键是如何是生成正确的中缀。处理好0到9和括号还有+-*/等直接的关系。就是一个逻辑
1.数字不能出现两个小数点
2.不能同时出现两个操作符。比如++。-+。等
3.括号要匹配
4.操作符之间的输入要正确 等
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "kuohao_stack.h"
namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QString all;//记录全部其信息
     QString only_num;//记录数字其信息
     QString x(QString s);//我测试用的,没啥用
private slots:
     void on_pushButton1_clicked();
     void on_pushButton2_clicked();
     void on_pushButton3_clicked();
     void on_pushButton4_clicked();
     void on_pushButton5_clicked();
     void on_pushButton6_clicked();
     void on_pushButton7_clicked();
     void on_pushButton8_clicked();
     void on_pushButton9_clicked();
     void on_pushButton0_clicked();
     void on_pushButton_dot_clicked();
     void on_pushButton_add_clicked();
     void on_pushButton_sub_clicked();
     void on_pushButton_mul_clicked();
     void on_pushButton_div_clicked();
     void on_pushButton_4_clicked();
     void on_pushButton_3_clicked();
     void on_pushButton_clicked();
     void on_pushButton_2_clicked();
     void on_pushButton_res_clicked();
     //void on_pushButton_close_clicked();


private:
    Ui::MainWindow *ui;
};


#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
   
    ui->setupUi(this);
    ui->lineEdit->setReadOnly(true);
    ui->lineEdit->setAlignment(Qt::AlignRight);
     ui->lineEdit_2->setAlignment(Qt::AlignRight);
   // ui->lineEdit_2->setStyleSheet("{border-width:0;border-style:outset;font: 20pt}");//除边框
   // ui->lineEdit->setStyleSheet("{border-width:0;border-style:outset;font: 20pt}");
}
QString MainWindow::x(QString s)
{
   
    return s;
}
MainWindow::~MainWindow()
{
   
    delete ui;
}
void MainWindow::on_pushButton1_clicked()
{
   
    all=ui->lineEdit->text();//先保存输入的
    all+="1" ;              //然后再增加
    only_num+="1";       //这个是保持数字的变量 为了让其不出现两个小数点
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton2_clicked()
{
   
    all=ui->lineEdit->text();
    all+="2" ;
    only_num+="2";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton3_clicked()
{
   
    all=ui->lineEdit->text();
    all+="3" ;
    only_num+="3";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton4_clicked()
{
   
    all=ui->lineEdit->text();
    all+="4" ;
    only_num+="4";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton5_clicked()
{
   
    all=ui->lineEdit->text();
    all+="5" ;
    only_num+="5";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton6_clicked()
{
   
    all=ui->lineEdit->text();
    all+="6" ;
    only_num+="6";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton7_clicked()
{
   
    all=ui->lineEdit->text();
    all+="7" ;
    only_num+="7";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton8_clicked()
{
   
    all=ui->lineEdit->text();
    all+="8" ;
    only_num+="8";
    ui->lineEdit->setText(all);
    ui->lineEdit_2->setText(all);
}
void MainWindow::on_pushButton9_clicked()
{
   
    all=ui->lineEdit->text();
    all+="9" ;
    only_num+="9";
    ui->
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值