QT5写一个复数计算器(附源码)

  • 首先来看看运行效果
    在这里插入图片描述

  • 如果觉得这个程序还可以,那么就来看看怎么来写这个程序吧!
    1.安装qt5 下载链接https://www1.qt.io/download-open-source-access/ (需注册)
    2.1 简单学习一下qt5 http://c.biancheng.net/qt/
    2.2 因为我们主要是用qt5来写页面,所以在了解各个控件后,着重了解“信息与槽”的机制。
    2.3 想要深入了解的话,推荐《Qt高级编程》
    3. 算法实现的话,主要是把括号、操作符、复数的实部和虚部都看成一个“元素”。然后把中序表达式转成后序表达式,然后进出栈来计算。
    c++的计算器类

    具体细节可参照下面链接

  • 下载链接-
    https://github.com/callmebg/Complex-calculator

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 C++ 计算器程序,使用 QT 框架: 首先,在 QT Creator 中创建一个新的 QT Widgets 应用程序项目。接下来,打开 mainwindow.cpp 文件并添加以下代码: ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 连接数字按钮的信号和槽 connect(ui->button_0, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_1, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_2, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_3, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_4, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_5, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_6, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_7, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_8, SIGNAL(clicked()), this, SLOT(digitClicked())); connect(ui->button_9, SIGNAL(clicked()), this, SLOT(digitClicked())); // 连接运算符按钮的信号和槽 connect(ui->button_add, SIGNAL(clicked()), this, SLOT(operatorClicked())); connect(ui->button_sub, SIGNAL(clicked()), this, SLOT(operatorClicked())); connect(ui->button_mul, SIGNAL(clicked()), this, SLOT(operatorClicked())); connect(ui->button_div, SIGNAL(clicked()), this, SLOT(operatorClicked())); connect(ui->button_equal, SIGNAL(clicked()), this, SLOT(equalClicked())); // 初始化计算器状态 m_state = STATE_FIRST_OPERAND; m_operator = OPERATOR_NONE; m_firstOperand = 0; m_secondOperand = 0; } MainWindow::~MainWindow() { delete ui; } void MainWindow::digitClicked() { QPushButton *button = (QPushButton *)sender(); int digitValue = button->text().toInt(); if (m_state == STATE_FIRST_OPERAND) { m_firstOperand = m_firstOperand * 10 + digitValue; ui->display->setText(QString::number(m_firstOperand)); } else { m_secondOperand = m_secondOperand * 10 + digitValue; ui->display->setText(QString::number(m_secondOperand)); } } void MainWindow::operatorClicked() { QPushButton *button = (QPushButton *)sender(); if (m_state == STATE_FIRST_OPERAND) { m_operator = getOperator(button->text()); m_state = STATE_SECOND_OPERAND; } else { calculate(); m_operator = getOperator(button->text()); m_state = STATE_SECOND_OPERAND; } } void MainWindow::equalClicked() { calculate(); m_state = STATE_FIRST_OPERAND; m_operator = OPERATOR_NONE; } void MainWindow::calculate() { int result = 0; switch (m_operator) { case OPERATOR_ADD: result = m_firstOperand + m_secondOperand; break; case OPERATOR_SUB: result = m_firstOperand - m_secondOperand; break; case OPERATOR_MUL: result = m_firstOperand * m_secondOperand; break; case OPERATOR_DIV: result = m_firstOperand / m_secondOperand; break; default: break; } ui->display->setText(QString::number(result)); m_firstOperand = result; m_secondOperand = 0; } MainWindow::Operator MainWindow::getOperator(const QString &text) { if (text == "+") { return OPERATOR_ADD; } else if (text == "-") { return OPERATOR_SUB; } else if (text == "*") { return OPERATOR_MUL; } else if (text == "/") { return OPERATOR_DIV; } else { return OPERATOR_NONE; } } ``` 然后,在 mainwindow.h 文件中添加以下代码: ``` #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); enum State { STATE_FIRST_OPERAND, STATE_SECOND_OPERAND }; enum Operator { OPERATOR_ADD, OPERATOR_SUB, OPERATOR_MUL, OPERATOR_DIV, OPERATOR_NONE }; private slots: void digitClicked(); void operatorClicked(); void equalClicked(); private: void calculate(); Operator getOperator(const QString &text); Ui::MainWindow *ui; State m_state; Operator m_operator; int m_firstOperand; int m_secondOperand; }; #endif // MAINWINDOW_H ``` 最后,在 UI 界面中添加数字按钮和运算符按钮,并将它们的信号连接到对应的槽函数。 现在,您可以编译并运行该程序,测试您的计算器是否正确工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值