Qt-制作一个简单的计算器-实现四则运算

实现效果

实现
在这里插入图片描述
实现
在这里插入图片描述
实现
在这里插入图片描述
实现
在这里插入图片描述

如何完成?

在上一章的基础上,删除+,改成在这里插入图片描述
这个.
选择编辑项目,如图在这里插入图片描述.
在这里插入图片描述
安下图的加号,添加+ ,- , * , / 四则运算在这里插入图片描述

代码部分

在这里插入图片描述

完整代码

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();

private:
    Ui::MainWindow *ui;
private slots:
    void calSlot();
};
#endif // MAINWINDOW_H

main.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"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QObject::connect(
                //ui里面的calButton对象(计算按钮)
                ui->calButton,
                //发送一个信号(点击信号)
                SIGNAL(clicked()),
                //给当前这个对象
                this,
                //用一个槽函数calSlot()来连接
                SLOT(calSlot()));
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::calSlot()
{
    int first=ui->firstLineEdit->text().
            toInt();
    int second=ui->secondLineEdit->text().
            toInt();
    int result;
    if(ui->comboBox->currentIndex()==0){//+
        result=first+second;
        ui->resultLineEdit->setText(QString::number(result));
    }
    if(ui->comboBox->currentIndex()==1){//-
        result=first-second;
        ui->resultLineEdit->setText(QString::number(result));
    }
    if(ui->comboBox->currentIndex()==2){//*
        result=first*second;
        ui->resultLineEdit->setText(QString::number(result));
    }
    if(ui->comboBox->currentIndex()==3){// /
        if(second==0)return;
        result=first/second;
        ui->resultLineEdit->setText(QString::number(result));
    }
}


A:好的,我可以为您提供相关的代码示例。请参考以下内容: 首先,在Qt中使用QLineEdit控件来显示输入和计算结果: ```cpp QLineEdit* input_box = new QLineEdit(); input_box->setReadOnly(true); input_box->setAlignment(Qt::AlignRight); input_box->setText("0"); ``` 然后,我们可以使用QPushButton控件来实现四则运算、清零和回车功能。例如,下面的代码展示如何创建一个数字按钮: ```cpp QPushButton* button_1 = new QPushButton("1", this); button_1->setFixedSize(50, 50); connect(button_1, &QPushButton::clicked, this, [=](){ input_box->setText(input_box->text() + "1"); }); ``` 类似地,我们可以创建运算符按钮: ```cpp QPushButton* button_plus = new QPushButton("+", this); button_plus->setFixedSize(50, 50); connect(button_plus, &QPushButton::clicked, this, [=](){ input_box->setText(input_box->text() + "+"); }); ``` 实现计算器四则运算可以使用Qt中的QScriptEngine类: ```cpp QScriptEngine engine; input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber())); ``` 最后,我们可以添加一个清零按钮和回车键响应: ```cpp QPushButton* button_clear = new QPushButton("Clear", this); button_clear->setFixedSize(50, 50); connect(button_clear, &QPushButton::clicked, this, [=](){ input_box->setText("0"); }); connect(input_box, &QLineEdit::returnPressed, this, [=](){ QScriptEngine engine; input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber())); }); ``` 完整的计算器界面代码如下: ```cpp #include <QtWidgets/QApplication> #include <QtWidgets/QWidget> #include <QtWidgets/QLineEdit> #include <QtWidgets/QPushButton> #include <QtScript/QScriptEngine> class Calculator : public QWidget { public: Calculator(QWidget* parent = nullptr) : QWidget(parent) { setFixedSize(220, 300); setWindowTitle("Calculator"); QLineEdit* input_box = new QLineEdit(); input_box->setReadOnly(true); input_box->setAlignment(Qt::AlignRight); input_box->setFixedHeight(50); input_box->setText("0"); QPushButton* button_1 = new QPushButton("1", this); button_1->setFixedSize(50, 50); connect(button_1, &QPushButton::clicked, this, [=](){ input_box->setText(input_box->text() + "1"); }); ... QPushButton* button_0 = new QPushButton("0", this); button_0->setFixedSize(50, 50); connect(button_0, &QPushButton::clicked, this, [=](){ if(input_box->text() == "0") return; input_box->setText(input_box->text() + "0"); }); QPushButton* button_plus = new QPushButton("+", this); button_plus->setFixedSize(50, 50); connect(button_plus, &QPushButton::clicked, this, [=](){ input_box->setText(input_box->text() + "+"); }); ... QPushButton* button_clear = new QPushButton("Clear", this); button_clear->setFixedSize(50, 50); connect(button_clear, &QPushButton::clicked, this, [=](){ input_box->setText("0"); }); connect(input_box, &QLineEdit::returnPressed, this, [=](){ QScriptEngine engine; input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber())); }); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget(input_box); QHBoxLayout* b_row1 = new QHBoxLayout(); b_row1->addWidget(button_7); b_row1->addWidget(button_8); b_row1->addWidget(button_9); b_row1->addWidget(button_divide); layout->addLayout(b_row1); ... QHBoxLayout* b_row5 = new QHBoxLayout(); b_row5->addWidget(button_clear); b_row5->addWidget(button_0); b_row5->addWidget(button_equals); b_row5->addWidget(button_plus); layout->addLayout(b_row5); setLayout(layout); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); Calculator calc; calc.show(); return app.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

踏过山河,踏过海

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

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

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

打赏作者

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

抵扣说明:

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

余额充值