Не работает операция равно в калькуляторе на qt

Решил изучать qt и как первое приложение написать калькулятор

Вот код

MainWindow.cpp

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    connect(ui->button0, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button1, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button2, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button3, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button4, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button5, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button6, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button7, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button8, &QPushButton::clicked,this,&MainWindow::digit_pressed);
    connect(ui->button9, &QPushButton::clicked,this,&MainWindow::digit_pressed);

    connect(ui->buttonAdd, &QPushButton::clicked,this,&MainWindow::operation_pressed);
    connect(ui->buttonMultiply, &QPushButton::clicked,this,&MainWindow::operation_pressed);
    connect(ui->buttonDivide, &QPushButton::clicked,this,&MainWindow::operation_pressed);
    connect(ui->buttonSubtract, &QPushButton::clicked,this,&MainWindow::operation_pressed);

    connect(ui->buttonEquals,&QPushButton::clicked,this,&MainWindow::equals_pressed);
    connect(ui->buttonClear,&QPushButton::clicked,this,&MainWindow::clear_pressed);
}

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

void MainWindow::digit_pressed()
{
    QPushButton *button = (QPushButton*)sender();
    QString newLabel;

    if((ui->lineEdit->text() == "0")|| (userIsTypingSecondNumber))
    {
        newLabel = button->text();
        userIsTypingSecondNumber = false;
    }
    else
    {
        newLabel = ui->lineEdit->text() + button->text();
    }

    ui->lineEdit->setText(newLabel);
}

void MainWindow::operation_pressed()
{
    QPushButton *button = (QPushButton*)sender();
    firstNum = ui->lineEdit->text().toDouble();
    userIsTypingSecondNumber = true;
    button->setChecked(true);
    ui->lineEdit->setText("");
}

void MainWindow::equals_pressed()
{
    double secondNum = ui->lineEdit->text().toDouble();
    QString newLable;

    if(ui->buttonAdd->isChecked())
    {
        newLable = QString::number(firstNum + secondNum);
        ui->buttonAdd->setChecked(false);
    }

    else if(ui->buttonSubtract->isChecked())
    {
        newLable = QString::number(firstNum - secondNum);
        ui->buttonSubtract->setChecked(false);
    }

    else if(ui->buttonMultiply->isChecked())
    {
        newLable = QString::number(firstNum * secondNum);
        ui->buttonMultiply->setChecked(false);
    }

    else if(ui->buttonDivide->isChecked())
    {
        newLable = QString::number(firstNum / secondNum);
        ui->buttonDivide->setChecked(false);
    }

    ui->lineEdit->setText(newLable);
    userIsTypingSecondNumber = false;
}

void MainWindow::clear_pressed()
{
    ui->lineEdit->setText("0");
    firstNum = 0;
    userIsTypingSecondNumber = false;
}

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.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void digit_pressed();
    void operation_pressed();
    void equals_pressed();
    void clear_pressed();

private:
    Ui::MainWindow *ui;
    double firstNum;
    bool userIsTypingSecondNumber = false;
};
#endif // MAINWINDOW_H

вроде все правильно, но почему то при нажатии на равно не выводится результат вычисления, что не так?

вот сам калькулятор в mainwindow.ui, некотороые кнопки я пока не стал реализовывать Калькулятор


Ответы (1 шт):

Автор решения: charango

Вероятно, Вы не задали на ui-форме свойство checkable у кнопок математических операций. По умолчанию оно выключено.

→ Ссылка