Не работает операция равно в калькуляторе на 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
у кнопок математических операций. По умолчанию оно выключено.