QT实现一个简单的计算器

本文介绍了使用QT框架实现一个简单计算器的过程。程序包括一个文本编辑框和一系列自定义按钮,这些按钮继承自QToolButton并调整了尺寸。通过重写sizeHint()函数确保按钮宽度适配,并在主窗口展示所有组件,完成计算器应用的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先先看下这个程序的运行的demo,效果图如下:




在这个小程序中,有些值得注意的东西,就是包含如下:

1.文本编辑框

2.一系列的控件


在上面的控件类Button都是继承自QToolButton类,并重写了其中的sizeHint()函数,让宽度拉升

具体代码如下:

#ifndef BUTTON_H
#define BUTTON_H

#include<QToolButton>

class Button : public QToolButton
{
    Q_OBJECT
public:
    explicit Button(const QString &text , QWidget *parent = 0);
    ~Button();

    QSize sizeHint() const Q_DECL_OVERRIDE;

};

#endif // BUTTON_H


#include "button.h"
#include<QtWidgets>

Button::Button(const QString& text , QWidget* parent):QToolButton(parent)
{

    setSizePolicy(QSizePolicy::Expanding , QSizePolicy::Preferred);

    setText(text);
}

Button::~Button()
{

}


QSize Button::sizeHint() const {

    QSize size = QToolButton::sizeHint();

    size.rheight() += 20;
    size.rwidth() = qMax(size.width() , size.height());
    return size;

}

然后就是在主窗口类中完成按钮的添加,以及窗口的布局,还有就是逻辑处理等代码了,具体如下:


#ifndef CALCULATOR_H
#define CALCULATOR_H

#include <QWidget>

QT_BEGIN_NAMESPACE

class QLineEdit;
QT_END_NAMESPACE
class Button;


class Calculator : public QWidget
{
    Q_OBJECT
public:
    explicit Calculator(QWidget *parent = 0);
    ~Calculator();

signals:

private slots:
    //数字点击
    void digitClicked();
    //一元操作点击
    void unaryOperatorClicked();
    //加法操作
    void additiveOperatorClicked();
    //乘法操作
    void multiplicativeOperatorClicked();
    //
    void equalClicked();

    void pointClicked();

    void changeSignClicked();

    void backspaceClicked();

    void clear();

    void clearAll();

    void clearMemory();

    void readMemory();

    void setMemory();

    void addToMemory();



private:

    Button* createButton(const QString& text ,const char* memory );

    void abortOperation();

    bool calculate(double rightOperand , const QString &pendingOperator);


    double sumInMemory;
    double sumSoFar;
    double factorSoFar;

    QString pendingAdditiveOperator;

    QString pendingMultiplicatibeOperator;

    bool waitingForOperand;

    QLineEdit *display;

    enum {
        NumDigitButtons = 10

    };

    Button* digitButtons[NumDigitButtons];


};

#endif // CALCULATOR_H


#include "calculator.h"

#include<QtWidgets>

#include<math.h>

#include"button.h"


Calculator::Calculator(QWidget *parent) : QWidget(parent)
{

    //变量的初始化
    sumInMemory = 0.0;
    sumSoFar = 0.0;
    factorSoFar = 0.0;

    waiti
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值