最近几天在学习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();
//标签