QT学习之路十一(一个简易计算器)

  这几天一直在调试上文说到的bug,一直没有什么进展,今天我没有继续调试,而是转去做了一个简易的计算器,让我的脑子换换思路,一直想那个问题,却一直没有思路让我真的很头疼。

  好了,话不多说还是直接上代码吧,思路不难,况且我做的也只是一个简易的计算器。

/********************************************************************************
** Form generated from reading UI file 'jisuanqi.ui'
**
** Created: Sun Feb 26 21:22:25 2017
**      by: Qt User Interface Compiler version 4.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_JISUANQI_H
#define UI_JISUANQI_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Jisuanqi
{
public:
    QWidget *centralWidget;
    QWidget *gridLayoutWidget;
    QGridLayout *gridLayout;
    QPushButton *num7;
    QPushButton *num8;
    QPushButton *num9;
    QPushButton *num4;
    QPushButton *num5;
    QPushButton *num6;
    QPushButton *num3;
    QPushButton *num1;
    QPushButton *num2;
    QPushButton *num0;
    QPushButton *deng;
    QPushButton *jian;
    QPushButton *chu;
    QPushButton *cheng;
    QPushButton *add;
    QPushButton *AC;
    QLabel *label;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *Jisuanqi)
    {
        if (Jisuanqi->objectName().isEmpty())
            Jisuanqi->setObjectName(QString::fromUtf8("Jisuanqi"));
        Jisuanqi->resize(300, 400);
        Jisuanqi->setMinimumSize(QSize(300, 400));
        Jisuanqi->setMaximumSize(QSize(300, 400));
        centralWidget = new QWidget(Jisuanqi);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        gridLayoutWidget = new QWidget(centralWidget);
        gridLayoutWidget->setObjectName(QString::fromUtf8("gridLayoutWidget"));
        gridLayoutWidget->setGeometry(QRect(10, 70, 271, 311));
        gridLayout = new QGridLayout(gridLayoutWidget);
        gridLayout->setSpacing(6);
        gridLayout->setContentsMargins(11, 11, 11, 11);
        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
        gridLayout->setContentsMargins(0, 0, 0, 0);
        num7 = new QPushButton(gridLayoutWidget);
        num7->setObjectName(QString::fromUtf8("num7"));
        num7->setMinimumSize(QSize(45, 30));
        num7->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num7, 1, 0, 1, 1);

        num8 = new QPushButton(gridLayoutWidget);
        num8->setObjectName(QString::fromUtf8("num8"));
        num8->setMinimumSize(QSize(45, 30));
        num8->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num8, 1, 1, 1, 1);

        num9 = new QPushButton(gridLayoutWidget);
        num9->setObjectName(QString::fromUtf8("num9"));
        num9->setMinimumSize(QSize(45, 30));
        num9->setMaximumSize(QSize(45, 30));
        QFont font;
        font.setBold(false);
        font.setWeight(50);
        num9->setFont(font);

        gridLayout->addWidget(num9, 1, 2, 1, 1);

        num4 = new QPushButton(gridLayoutWidget);
        num4->setObjectName(QString::fromUtf8("num4"));
        num4->setMinimumSize(QSize(45, 30));
        num4->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num4, 2, 0, 1, 1);

        num5 = new QPushButton(gridLayoutWidget);
        num5->setObjectName(QString::fromUtf8("num5"));
        num5->setMinimumSize(QSize(45, 30));
        num5->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num5, 2, 1, 1, 1);

        num6 = new QPushButton(gridLayoutWidget);
        num6->setObjectName(QString::fromUtf8("num6"));
        num6->setMinimumSize(QSize(45, 30));
        num6->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num6, 2, 2, 1, 1);

        num3 = new QPushButton(gridLayoutWidget);
        num3->setObjectName(QString::fromUtf8("num3"));
        num3->setMinimumSize(QSize(45, 30));
        num3->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num3, 3, 2, 1, 1);

        num1 = new QPushButton(gridLayoutWidget);
        num1->setObjectName(QString::fromUtf8("num1"));
        num1->setMinimumSize(QSize(45, 30));
        num1->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num1, 3, 0, 1, 1);

        num2 = new QPushButton(gridLayoutWidget);
        num2->setObjectName(QString::fromUtf8("num2"));
        num2->setMinimumSize(QSize(45, 30));
        num2->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num2, 3, 1, 1, 1);

        num0 = new QPushButton(gridLayoutWidget);
        num0->setObjectName(QString::fromUtf8("num0"));
        num0->setMinimumSize(QSize(45, 30));
        num0->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(num0, 4, 0, 1, 1);

        deng = new QPushButton(gridLayoutWidget);
        deng->setObjectName(QString::fromUtf8("deng"));
        deng->setMinimumSize(QSize(45, 30));
        deng->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(deng, 4, 2, 1, 1);

        jian = new QPushButton(gridLayoutWidget);
        jian->setObjectName(QString::fromUtf8("jian"));
        jian->setMinimumSize(QSize(45, 30));
        jian->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(jian, 4, 1, 1, 1);

        chu = new QPushButton(gridLayoutWidget);
        chu->setObjectName(QString::fromUtf8("chu"));
        chu->setMinimumSize(QSize(45, 30));
        chu->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(chu, 4, 4, 1, 1);

        cheng = new QPushButton(gridLayoutWidget);
        cheng->setObjectName(QString::fromUtf8("cheng"));
        cheng->setMinimumSize(QSize(45, 30));
        cheng->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(cheng, 3, 4, 1, 1);

        add = new QPushButton(gridLayoutWidget);
        add->setObjectName(QString::fromUtf8("add"));
        add->setMinimumSize(QSize(45, 30));
        add->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(add, 2, 4, 1, 1);

        AC = new QPushButton(gridLayoutWidget);
        AC->setObjectName(QString::fromUtf8("AC"));
        AC->setMinimumSize(QSize(45, 30));
        AC->setMaximumSize(QSize(45, 30));

        gridLayout->addWidget(AC, 1, 4, 1, 1);

        label = new QLabel(centralWidget);
        label->setObjectName(QString::fromUtf8("label"));
        label->setGeometry(QRect(10, 20, 271, 61));
        QFont font1;
        font1.setPointSize(13);
        label->setFont(font1);
        label->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
        Jisuanqi->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(Jisuanqi);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 300, 21));
        Jisuanqi->setMenuBar(menuBar);
        mainToolBar = new QToolBar(Jisuanqi);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        Jisuanqi->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(Jisuanqi);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        Jisuanqi->setStatusBar(statusBar);

        retranslateUi(Jisuanqi);

        QMetaObject::connectSlotsByName(Jisuanqi);
    } // setupUi

    void retranslateUi(QMainWindow *Jisuanqi)
    {
        Jisuanqi->setWindowTitle(QApplication::translate("Jisuanqi", "Jisuanqi", 0, QApplication::UnicodeUTF8));
        num7->setText(QApplication::translate("Jisuanqi", "7", 0, QApplication::UnicodeUTF8));
        num8->setText(QApplication::translate("Jisuanqi", "8", 0, QApplication::UnicodeUTF8));
        num9->setText(QApplication::translate("Jisuanqi", "9", 0, QApplication::UnicodeUTF8));
        num4->setText(QApplication::translate("Jisuanqi", "4", 0, QApplication::UnicodeUTF8));
        num5->setText(QApplication::translate("Jisuanqi", "5", 0, QApplication::UnicodeUTF8));
        num6->setText(QApplication::translate("Jisuanqi", "6", 0, QApplication::UnicodeUTF8));
        num3->setText(QApplication::translate("Jisuanqi", "3", 0, QApplication::UnicodeUTF8));
        num1->setText(QApplication::translate("Jisuanqi", "1", 0, QApplication::UnicodeUTF8));
        num2->setText(QApplication::translate("Jisuanqi", "2", 0, QApplication::UnicodeUTF8));
        num0->setText(QApplication::translate("Jisuanqi", "0", 0, QApplication::UnicodeUTF8));
        deng->setText(QApplication::translate("Jisuanqi", "=", 0, QApplication::UnicodeUTF8));
        jian->setText(QApplication::translate("Jisuanqi", "-", 0, QApplication::UnicodeUTF8));
        chu->setText(QApplication::translate("Jisuanqi", "/", 0, QApplication::UnicodeUTF8));
        cheng->setText(QApplication::translate("Jisuanqi", "x", 0, QApplication::UnicodeUTF8));
        add->setText(QApplication::translate("Jisuanqi", "+", 0, QApplication::UnicodeUTF8));
        AC->setText(QApplication::translate("Jisuanqi", "AC", 0, QApplication::UnicodeUTF8));
        label->setText(QString());
    } // retranslateUi

};

namespace Ui {
    class Jisuanqi: public Ui_Jisuanqi {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_JISUANQI_H

#ifndef JISUANQI_H
#define JISUANQI_H

#include <QMainWindow>

namespace Ui {
class Jisuanqi;
}

class Jisuanqi : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit Jisuanqi(QWidget *parent = 0);
    ~Jisuanqi();
    
private slots:
    void on_num0_clicked();

    void on_num1_clicked();

    void on_num2_clicked();

    void on_num3_clicked();

    void on_num4_clicked();

    void on_num5_clicked();

    void on_num6_clicked();

    void on_num7_clicked();

    void on_num8_clicked();

    void on_num9_clicked();

    void on_add_clicked();

    void on_jian_clicked();

    void on_cheng_clicked();

    void on_chu_clicked();

    void on_deng_clicked();

    void on_AC_clicked();

private:
    Ui::Jisuanqi *ui;
};

#endif // JISUANQI_H

#include "jisuanqi.h"
#include "ui_jisuanqi.h"
#include <QDebug>
#include <QStack>

QString str, str1;
double result = 0;

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

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

void Jisuanqi::on_num0_clicked()
{
    str = str + '0';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num1_clicked()
{
    str = str + '1';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num2_clicked()
{
    str = str + '2';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num3_clicked()
{
    str = str + '3';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num4_clicked()
{
    str = str + '4';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num5_clicked()
{
    str = str + '5';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num6_clicked()
{
    str = str + '6';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num7_clicked()
{
    str = str + '7';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num8_clicked()
{
    str = str + '8';
    this->ui->label->setText(str);
}

void Jisuanqi::on_num9_clicked()
{
    str = str + '9';
    this->ui->label->setText(str);
}

void Jisuanqi::on_add_clicked()
{
    str = str + '+';
    this->ui->label->setText(str);
}

void Jisuanqi::on_jian_clicked()
{
    str = str + '-';
    this->ui->label->setText(str);
}

void Jisuanqi::on_cheng_clicked()
{
    str = str + 'x';
    this->ui->label->setText(str);
}

void Jisuanqi::on_chu_clicked()
{
    str = str + '/';
    this->ui->label->setText(str);
}

void Jisuanqi::on_deng_clicked()
{
    QStack<double> num;
    QStack<char> ope;
    QString temp;
    for(int i = 0; i < str.length(); i++)
    {
        if(str[i] >= '0' && str[i] <= '9')
        {
            temp = temp + str[i];
        }
        else
        {
            num.push(temp.toDouble());
            ope.push(str[i].toAscii());
            temp = "";
        }
    }
    num.push_back(temp.toDouble());

    double num1,num2;
    char ope1;

    num1 = num.pop();
    num2 = num.pop();
    ope1 = ope.pop();
    if(ope.empty())
    {
        switch(ope1)
        {
            case '+':
            {
                result = num1 + num2;
                break;
            }
            case '-':
            {
                result = num2 - num1;
                break;
            }
            case 'x':
            {
                result = num1 * num2;
                break;
            }
            case '/':
            {
                result = num2 / num1;
                break;
            }
        }
    }

    QString str2 = QString("%1").arg(result);
    this->ui->label->setText(str2);
    str = "";
    result = 0;
}

void Jisuanqi::on_AC_clicked()
{
    str = "0";
    result = 0;
    this->ui->label->setText(str);
}

#include <QtGui/QApplication>
#include "jisuanqi.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Jisuanqi w;
    w.show();
    
    return a.exec();
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值