用QT实现一个简单的计算机

  1. 打开QT Creator并创建一个新的QT Widgets应用程序。

  2. 在设计模式中,将所需的按钮和文本框添加到主窗口界面上。

  3. 为每个按钮创建对应的点击事件处理函数,以及一个用于处理运算的函数。

cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 连接数字按钮的点击事件
    connect(ui->button0, SIGNAL(clicked()), this, SLOT(digitClicked()));
    connect(ui->button1, SIGNAL(clicked()), this, SLOT(digitClicked()));
    connect(ui->button2, SIGNAL(clicked()), this, SLOT(digitClicked()));
    // ...
    
    // 连接运算符按钮的点击事件
    connect(ui->buttonPlus, SIGNAL(clicked()), this, SLOT(operatorClicked()));
    connect(ui->buttonMinus, SIGNAL(clicked()), this, SLOT(operatorClicked()));
    connect(ui->buttonMultiply, SIGNAL(clicked()), this, SLOT(operatorClicked()));
    connect(ui->buttonDivide, SIGNAL(clicked()), this, SLOT(operatorClicked()));
    
    // 连接等号按钮的点击事件
    connect(ui->buttonEquals, SIGNAL(clicked()), this, SLOT(equalsClicked()));
}

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

// 数字按钮点击事件处理函数
void MainWindow::digitClicked()
{
    QPushButton* button = dynamic_cast(sender());
    if (button != nullptr) {
        QString buttonText = button->text();
        ui->lineEdit->insert(buttonText);
    }
}

// 运算符按钮点击事件处理函数
void MainWindow::operatorClicked()
{
    QPushButton* button = dynamic_cast(sender());
    if (button != nullptr) {
        QString buttonText = button->text();
        ui->lineEdit->insert(" " + buttonText + " ");
    }
}

// 等号按钮点击事件处理函数
void MainWindow::equalsClicked()
{
    QString expression = ui->lineEdit->text();

    // 解析表达式,执行运算
    
    // 显示结果
    ui->lineEdit->setText(result);
}

在代码中,我们使用了connect()函数将每个按钮的点击事件连接到对应的槽函数。在数字按钮点击事件处理函数中,我们获取按钮的文本并插入到输入框中。在运算符按钮点击事件处理函数中,我们在输入框中插入相应的运算符。在等号按钮点击事件处理函数中,我们获取输入框中的表达式,解析表达式并执行相应的运算,最后将结果显示在输入框中。

请注意,这里需要根据需要在equalsClicked()函数中添加代码来实现解析表达式和执行运算的逻辑。

  1. 在mainwindow.h文件中定义类成员变量和函数。

cpp

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void digitClicked();
    void operatorClicked();
    void equalsClicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
  1. 运行程序,测试计算器是否正常工作。

通过按照以上步骤,您可以使用C++和QT实现一个基本的计算器。用户可以点击数字按钮输入数字,点击运算符按钮输入运算符,并点击等号按钮执行运算并显示结果。您可以根据需要扩展代码,实现更多功能,如括号、小数点、清除按钮等。

你可能感兴趣的:(命令模式)