QT实现一个简单的计算器

博主在学习QT后,运用信号和槽机制、布局管理等知识,创建了一个具备快捷键和剪贴板功能的计算器应用。尽管菜单栏功能尚未完善,博主期待能从社区获取反馈以改进。

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

最近几天在学习QT,在了解了信号和槽机制、布局管理、还有一些控件的使用后,便试着写了一个计算器,带自定义的快捷键,剪贴板(复制和粘贴)的操作,有 菜单栏->选择 里的功能还未实现,等啥时候有时间把它补上吧。还有许多不足和需要修改的地方,希望各位大牛能帮忙指出其中的问题,谢谢。

下面就贴出我的代码:

calcMainWindow.h:

#ifndef CALCMAINWINDOW_H
#define CALCMAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QString>
#include <QVector>
#include <QKeyEvent>
#include <QLabel>
#include <QMenu>
#include <QAction>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

    QString temp;

    double number;
    void operation();           //运算
    void keyPressEvent(QKeyEvent *);       //键盘响应
    void creatAction();         //创建菜单栏选项
    void creatMenu();           //创建菜单

private:
    //菜单控件(功能尚未添加)
    QMenu *chooseMenu;          //“选择”菜单
    QMenu *editMenu;            //“编辑”菜单
    QMenu *helpMenu;            //“帮助”菜单

    QAction *standerAction;     //标准
    QAction *scienceAction;     //科学
    QAction *historyAction;     //历史记录
    QAction *dateAction;        //日期计算
    QAction *copyAction;        //复制
    QAction *pasteAction;       //粘贴
    QAction *helpAction;        //查看帮助
    QAction *aboutAction;       //关于

    //计算器相关控件
    QLabel *operationLabel;
    QLabel *resultLabel;

    QLineEdit *showTextEdit;    //表达式显示栏
    QLineEdit *resultTextEdit;  //结果显示栏
    QPushButton *backBtn;       //回退
    QPushButton *ceBtn;         //清除
    QPushButton *clearBtn;      //清空
    QPushButton *oneBtn;
    QPushButton *twoBtn;
    QPushButton *threeBtn;
    QPushButton *fourBtn;
    QPushButton *fiveBtn;
    QPushButton *sixBtn;
    QPushButton *sevenBtn;
    QPushButton *eightBtn;
    QPushButton *nineBtn;
    QPushButton *zeroBtn;
    QPushButton *pointBtn;      //.
    QPushButton *signBtn;       //+/-

    //四则运算
    QPushButton *addBtn;
    QPushButton *subBtn;
    QPushButton *mulBtn;
    QPushButton *divideBtn;
    QPushButton *isBtn;

public slots:
    void button_1_click();
    void button_2_click();
    void button_3_click();
    void button_4_click();
    void button_5_click();
    void button_6_click();
    void button_7_click();
    void button_8_click();
    void button_9_click();
    void button_0_click();

    void button_add_click();
    void button_sub_click();
    void button_mul_click();
    void button_divide_click();
    void button_is_click();

    void button_cls_click();
    void button_ce_click();
    void button_back_click();
    void button_point_click();
    void button_sign_click();

    void helpMessageBox();
    void aboutMessageBox();

    void copyResult();
    void pasteNumber();
};

#endif // CALCMAINWINDOW_H

calcMainWindow.cpp:

#include "calcMainWindow.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QRect>
#include <QMenuBar>
#include <QMessageBox>
#include <QClipboard>
#include <QApplication>

bool num2 = false;      //判断是否只有一个数
int operator1 = 0;      //运算符标记:+(1),-(2),*(3),/(4)
double result = 0;      //结果
bool flag = false;      //标记分母是否为0

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QWidget *centerWindow = new QWidget;
    this->setCentralWidget(centerWindow);

    creatAction();
    creatMenu();

    //标签
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值