widge.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QString>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
int op;//运算符号
double accumulator;//累加器
double sign;
QLabel* status;
QLabel* inputText;
bool inputResult;
QPushButton* buttonCE;
QPushButton* buttonC;
QPushButton* buttonDel;
QPushButton* digit_0;
QPushButton* digit_1;
QPushButton* digit_2;
QPushButton* digit_3;
QPushButton* digit_4;
QPushButton* digit_5;
QPushButton* digit_6;
QPushButton* digit_7;
QPushButton* digit_8;
QPushButton* digit_9;
QPushButton* buttonSign;
QPushButton* buttonDot;
QPushButton* buttonDivide;
QPushButton* buttonMultiply;
QPushButton *buttonMinus;
QPushButton *buttonPlus;
QPushButton *buttonEqual;
QGridLayout *buttonLayout;
QVBoxLayout *layout;
void digitPressed(QString x);
void processOp();
private slots:
void buttonCEPressed();
void buttonCPressed();
void buttonDelPressed();
void digit_0_Pressed();
void digit_1_Pressed();
void digit_2_Pressed();
void digit_3_Pressed();
void digit_4_Pressed();
void digit_5_Pressed();
void digit_6_Pressed();
void digit_7_Pressed();
void digit_8_Pressed();
void digit_9_Pressed();
void buttonDividePressed();
void buttonMultiplyPressed();
void buttonMinusPressed();
void buttonPlusPressed();
void buttonEqualPressed();
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
accumulator=0;
sign=1;
status=new QLabel;
status->setAlignment(Qt::AlignRight);
inputResult=true;
inputText=new QLabel(QObject::tr("0"));
inputText->setAlignment(Qt::AlignRight);
buttonCE=new QPushButton(QObject::tr("CE"));
buttonC=new QPushButton(QObject::tr("C"));
buttonDel=new QPushButton(QObject::tr("Del"));
digit_0=new QPushButton(QObject::tr("0"));
digit_1=new QPushButton(QObject::tr("1"));
digit_2=new QPushButton(QObject::tr("2"));
digit_3=new QPushButton(QObject::tr("3"));
digit_4=new QPushButton(QObject::tr("4"));
digit_5=new QPushButton(QObject::tr("5"));
digit_6=new QPushButton(QObject::tr("6"));
digit_7=new QPushButton(QObject::tr("7"));
digit_8=new QPushButton(QObject::tr("8"));
digit_9=new QPushButton(QObject::tr("9"));
buttonSign=new QPushButton(QObject::tr("±"));
buttonDot=new QPushButton(QObject::tr("."));
buttonDivide=new QPushButton(QObject::tr("÷"));
buttonMultiply=new QPushButton(QObject::tr("×"));
buttonMinus=new QPushButton(QObject::tr("-"));
buttonPlus=new QPushButton(QObject::tr("+"));
buttonEqual=new QPushButton(QObject::tr("="));
buttonLayout=new QGridLayout;
buttonLayout->addWidget(buttonCE,0,0);
buttonLayout->addWidget(buttonC,0,1);
buttonLayout->addWidget(buttonDel,0,2);
buttonLayout->addWidget(buttonDivide,0,3);
buttonLayout->addWidget(digit_7,1,0);
buttonLayout->addWidget(digit_8,1,1);
buttonLayout->addWidget(digit_9,1,2);
buttonLayout->addWidget(buttonMultiply,1,3);
buttonLayout->addWidget(digit_4,2,0);
buttonLayout->addWidget(digit_5,2,1);
buttonLayout->addWidget(digit_6,2,2);
buttonLayout->addWidget(buttonMinus,2,3);
buttonLayout->addWidget(digit_1,3,0);
buttonLayout->addWidget(digit_2,3,1);
buttonLayout->addWidget(digit_3,3,2);
buttonLayout->addWidget(buttonPlus,3,3);
buttonLayout->addWidget(buttonSign,4,0);
buttonLayout->addWidget(digit_0,4,1);
buttonLayout->addWidget(buttonDot,4,2);
buttonLayout->addWidget(buttonEqual,4,3);
layout=new QVBoxLayout;
layout->addWidget(inputText);
layout->addWidget(status);
layout->addLayout(buttonLayout);
setLayout(layout);
connect(buttonCE,SIGNAL(clicked(bool)),this,SLOT(buttonCEPressed()));
connect(buttonC,SIGNAL(clicked(bool)),this,SLOT(buttonCPressed()));
connect(buttonDel,SIGNAL(clicked(bool)),this,SLOT(buttonDelPressed()));
connect(digit_0,SIGNAL(clicked(bool)),this,SLOT(digit_0_Pressed()));
connect(digit_1,SIGNAL(clicked(bool)),this,SLOT(digit_1_Pressed()));
connect(digit_2,SIGNAL(clicked(bool)),this,SLOT(digit_2_Pressed()));
connect(digit_3,SIGNAL(clicked(bool)),this,SLOT(digit_3_Pressed()));
connect(digit_4,SIGNAL(clicked(bool)),this,SLOT(digit_4_Pressed()));
connect(digit_5,SIGNAL(clicked(bool)),this,SLOT(digit_5_Pressed()));
connect(digit_6,SIGNAL(clicked(bool)),this,SLOT(digit_6_Pressed()));
connect(digit_7,SIGNAL(clicked(bool)),this,SLOT(digit_7_Pressed()));
connect(digit_8,SIGNAL(clicked(bool)),this,SLOT(digit_8_Pressed()));
connect(digit_9,SIGNAL(clicked(bool)),this,SLOT(digit_9_Pressed()));
connect(buttonSign,SIGNAL(clicked(bool)),this,SLOT(buttonSignPressed()));
connect(buttonDot,SIGNAL(clicked(bool)),this,SLOT(buttonDotPressed()));
connect(buttonDivide,SIGNAL(clicked(bool)),this,SLOT(buttonDividePressed()));
connect(buttonMultiply,SIGNAL(clicked(bool)),this,SLOT(buttonMultiplyPressed()));
connect(buttonMinus,SIGNAL(clicked(bool)),this,SLOT(buttonMinusPressed()));
connect(buttonPlus,SIGNAL(clicked(bool)),this,SLOT(buttonPlusPressed()));
connect(buttonEqual,SIGNAL(clicked(bool)),this,SLOT(buttonEqualPressed()));
}
Widget::~Widget()
{
delete buttonCE;
delete buttonC;
delete buttonDel;
delete digit_0;
delete digit_1;
delete digit_2;
delete digit_3;
delete digit_4;
delete digit_5;
delete digit_6;
delete digit_7;
delete digit_8;
delete digit_9;
delete buttonDivide;
delete buttonMultiply;
delete buttonMinus;
delete buttonPlus;
delete buttonEqual;
}
void Widget::buttonCEPressed()
{
sign=1;
inputText->setText(QObject::tr("0"));
}
void Widget::digit_0_Pressed()
{
digitPressed(QObject::tr("0"));
}
void Widget::digit_1_Pressed()
{
digitPressed(QObject::tr("1"));
}
void Widget::digit_2_Pressed()
{
digitPressed(QObject::tr("2"));
}
void Widget::digit_3_Pressed()
{
digitPressed(QObject::tr("3"));
}
void Widget::digit_4_Pressed()
{
digitPressed(QObject::tr("4"));
}
void Widget::digit_5_Pressed()
{
digitPressed(QObject::tr("5"));
}
void Widget::digit_6_Pressed()
{
digitPressed(QObject::tr("6"));
}
void Widget::digit_7_Pressed()
{
digitPressed(QObject::tr("7"));
}
void Widget::digit_8_Pressed()
{
digitPressed(QObject::tr("8"));
}
void Widget::digit_9_Pressed()
{
digitPressed(QObject::tr("9"));
}
不知道你这个问题是否已经解决, 如果还没有解决的话: