




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Qt計算器源代碼caculator.h頭文件#ifndef CACULATOR_H#define CACULATOR_H#include <QDialog>#include <QLineEdit>#include <QPushButton>#include <QCloseEvent>#include <QKeyEvent>#include <QMessageBox>#include <QDebug>#include <QGridLayout>#include <QStack>#inclu
2、de "math.h"namespace Ui class Caculator;class Caculator : public QDialog Q_OBJECTpublic: explicit Caculator(QWidget *parent = 0); Caculator(); void widgetInitial();/初始化控件 void widgetLayout();/設置窗口布局 void pushButtonStyle(QPushButton *pushButton);/設置按鈕樣式 void lineEditStyle(QLineEdit *lineEdi
3、t,int height);/設置輸入框樣式 void setNumber(int num);/設置數字 void setOperation(int oper);/設置+、-、*、/、.、)等符號 void caculate(int cacu);/計算x2、x3、sin、cos、tan等 long factorial(int num);/計算階乘 /中綴轉換為后綴表達式 int toPostfix(const char *S,char OPS,int &len); /計算后綴表達式 int evaluation (char B, int len, double &result,
4、bool &flag);protected: void closeEvent(QCloseEvent *event);/窗口關閉事件 void keyPressEvent(QKeyEvent *key);/按鍵事件private: Ui:Caculator *ui; /計算器相關控件 QLineEdit *showTextEdit; /表達式顯示欄 QLineEdit *showResultEdit; /結果顯示欄 QPushButton *backBtn; /回退 QPushButton *ceBtn; /清除 QPushButton *clearBtn; /清空 QPushButt
5、on *oneBtn; QPushButton *twoBtn; QPushButton *threeBtn; QPushButton *fourBtn; QPushButton *fiveBtn; QPushButton *sixBtn; QPushButton *sevenBtn; QPushButton *eightBtn; QPushButton *nineBtn; QPushButton *zeroBtn; QPushButton *pointBtn; /. QPushButton *left_bracket; /( QPushButton *right_bracket; /) /內
6、存管理 QPushButton *clearMemoryBtn; /創建清除內存按鈕 QPushButton *readMemoryBtn; /創建讀內存按鈕 QPushButton *setMemoryBtn; /創建設置內存按鈕 /運算 QPushButton *signBtn; /+/- QPushButton *addBtn; QPushButton *subBtn; QPushButton *mulBtn; QPushButton *divideBtn; QPushButton *sqrtBtn; /開方 QPushButton *squBtn; /平方 QPushButton *c
7、ubeBtn; /立方 QPushButton *logBtn; QPushButton *recipBtn; /倒數 QPushButton *factBtn; /階乘 QPushButton *sinBtn; QPushButton *cosBtn; QPushButton *tanBtn; QPushButton *InBtn; /對數 QPushButton *tenxBtn; QPushButton *expBtn; QPushButton *sinhBtn; QPushButton *coshBtn; QPushButton *tanhBtn; QPushButton *xyBtn
8、; /xy QPushButton *modBtn; /取模 QPushButton *equalBtn; double sumMemory;private slots: /按鈕所關聯的槽函數 void clearMemoryBtnSlot(); void readMemoryBtnSlot(); void setMemoryBtnSlot(); void signBtnSlot(); void sqrtBtnSlot(); void sinBtnSlot(); void backBtnSlot(); void ceBtnSlot(); void clearBtnSlot(); void sq
9、uBtnSlot(); void cosBtnSlot(); void sevenBtnSlot(); void eightBtnSlot(); void nineBtnSlot(); void divideBtnSlot(); void cubeBtnSlot(); void tanBtnSlot(); void fourBtnSlot(); void fiveBtnSlot(); void sixBtnSlot(); void mulBtnSlot(); void logBtnSlot(); void InBtnSlot(); void oneBtnSlot(); void twoBtnS
10、lot(); void threeBtnSlot(); void subBtnSlot(); void recipBtnSlot(); void tenxBtnSlot(); void zeroBtnSlot(); void pointBtnSlot(); void addBtnSlot(); void factBtnSlot(); void equalBtnSlot(); void expBtnSlot(); void sinhBtnSlot(); void coshBtnSlot(); void tanhBtnSlot(); void xyBtnSlot(); void modBtnSlo
11、t(); void left_bracketSlot(); void right_bracketSlot();#endif / CACULATOR_Hcaculator.cpp源文件#include "caculator.h"#include "ui_caculator.h"Caculator:Caculator(QWidget *parent) : QDialog(parent), ui(new Ui:Caculator) ui->setupUi(this); this->widgetInitial(); this->widgetLa
12、yout();Caculator:Caculator() delete ui;/初始化控件void Caculator:widgetInitial() this->setWindowFlags(Qt:WindowCloseButtonHint); this->setWindowTitle("計算器"); this->setFixedSize(this->width(),this->height(); showTextEdit=new QLineEdit(this); showTextEdit->setText("");
13、 showResultEdit=new QLineEdit(this); showResultEdit->setText("0"); backBtn=new QPushButton(this); backBtn->setText(""); ceBtn=new QPushButton(this); ceBtn->setText("CE"); clearBtn=new QPushButton(this); clearBtn->setText("C"); oneBtn=new QPushButto
14、n(this); oneBtn->setText("1"); twoBtn=new QPushButton(this); twoBtn->setText("2"); threeBtn=new QPushButton(this); threeBtn->setText("3"); fourBtn=new QPushButton(this); fourBtn->setText("4"); fiveBtn=new QPushButton(this); fiveBtn->setText(&quo
15、t;5"); sixBtn=new QPushButton(this); sixBtn->setText("6"); sevenBtn=new QPushButton(this); sevenBtn->setText("7"); eightBtn=new QPushButton(this); eightBtn->setText("8"); nineBtn=new QPushButton(this); nineBtn->setText("9"); zeroBtn=new QPushB
16、utton(this); zeroBtn->setText("0"); pointBtn=new QPushButton(this); pointBtn->setText("."); clearMemoryBtn=new QPushButton(this); clearMemoryBtn->setText("MC"); readMemoryBtn=new QPushButton(this); readMemoryBtn->setText("MR"); setMemoryBtn=new QPu
17、shButton(this); setMemoryBtn->setText("MS"); signBtn=new QPushButton(this); signBtn->setText("302261"); addBtn=new QPushButton(this); addBtn->setText("+"); subBtn=new QPushButton(this); subBtn->setText("-"); mulBtn=new QPushButton(this); mulBtn->
18、;setText("*"); divideBtn=new QPushButton(this); divideBtn->setText("/"); right_bracket=new QPushButton(this); right_bracket->setText(")"); left_bracket=new QPushButton(this); left_bracket->setText("("); sqrtBtn=new QPushButton(this); sqrtBtn->setTe
19、xt(""); squBtn=new QPushButton(this); squBtn->setText("x²"); cubeBtn=new QPushButton(this); cubeBtn->setText("x³"); logBtn=new QPushButton(this); logBtn->setText("log"); recipBtn=new QPushButton(this); recipBtn->setText("1/x");
20、factBtn=new QPushButton(this); factBtn->setText("n!"); sinBtn=new QPushButton(this); sinBtn->setText("sin"); cosBtn=new QPushButton(this); cosBtn->setText("cos"); tanBtn=new QPushButton(this); tanBtn->setText("tan"); InBtn=new QPushButton(this); In
21、Btn->setText("In"); tenxBtn=new QPushButton(this); tenxBtn->setText("10x"); expBtn=new QPushButton(this); expBtn->setText("Exp"); sinhBtn=new QPushButton(this); sinhBtn->setText("sinh"); coshBtn=new QPushButton(this); coshBtn->setText("cosh
22、"); tanhBtn=new QPushButton(this); tanhBtn->setText("tanh"); xyBtn=new QPushButton(this); xyBtn->setText("xy"); modBtn=new QPushButton(this); modBtn->setText("Mod"); equalBtn=new QPushButton(this); equalBtn->setText("="); sumMemory=0.0; /設置樣式
23、lineEditStyle(showTextEdit,30); lineEditStyle(showResultEdit,30); pushButtonStyle(clearMemoryBtn); pushButtonStyle(readMemoryBtn); pushButtonStyle(setMemoryBtn); pushButtonStyle(signBtn); pushButtonStyle(sqrtBtn); pushButtonStyle(sinBtn); pushButtonStyle(backBtn); pushButtonStyle(ceBtn); pushButtonS
24、tyle(clearBtn); pushButtonStyle(squBtn); pushButtonStyle(cosBtn); pushButtonStyle(left_bracket); pushButtonStyle(right_bracket); pushButtonStyle(sevenBtn); pushButtonStyle(eightBtn); pushButtonStyle(nineBtn); pushButtonStyle(divideBtn); pushButtonStyle(cubeBtn); pushButtonStyle(tanBtn); pushButtonSt
25、yle(fourBtn); pushButtonStyle(fiveBtn); pushButtonStyle(sixBtn); pushButtonStyle(mulBtn); pushButtonStyle(logBtn); pushButtonStyle(InBtn); pushButtonStyle(oneBtn); pushButtonStyle(twoBtn); pushButtonStyle(threeBtn); pushButtonStyle(subBtn); pushButtonStyle(recipBtn); pushButtonStyle(tenxBtn); pushBu
26、ttonStyle(zeroBtn); pushButtonStyle(pointBtn); pushButtonStyle(addBtn); pushButtonStyle(factBtn); pushButtonStyle(equalBtn); pushButtonStyle(expBtn); pushButtonStyle(sinhBtn); pushButtonStyle(coshBtn); pushButtonStyle(tanhBtn); pushButtonStyle(xyBtn); pushButtonStyle(modBtn); /關聯信號和槽 connect(clearMe
27、moryBtn,SIGNAL(clicked(bool),this,SLOT(clearMemoryBtnSlot(); connect(readMemoryBtn,SIGNAL(clicked(bool),this,SLOT(readMemoryBtnSlot(); connect(setMemoryBtn,SIGNAL(clicked(bool),this,SLOT(setMemoryBtnSlot(); connect(signBtn,SIGNAL(clicked(bool),this,SLOT(signBtnSlot(); connect(sqrtBtn,SIGNAL(clicked(
28、bool),this,SLOT(sqrtBtnSlot(); connect(sinBtn,SIGNAL(clicked(bool),this,SLOT(sinBtnSlot(); connect(backBtn,SIGNAL(clicked(bool),this,SLOT(backBtnSlot(); connect(ceBtn,SIGNAL(clicked(bool),this,SLOT(ceBtnSlot(); connect(clearBtn,SIGNAL(clicked(bool),this,SLOT(clearBtnSlot(); connect(squBtn,SIGNAL(cli
29、cked(bool),this,SLOT(squBtnSlot(); connect(cosBtn,SIGNAL(clicked(bool),this,SLOT(cosBtnSlot(); connect(left_bracket,SIGNAL(clicked(bool),this,SLOT(left_bracketSlot(); connect(right_bracket,SIGNAL(clicked(bool),this,SLOT(right_bracketSlot(); connect(sevenBtn,SIGNAL(clicked(bool),this,SLOT(sevenBtnSlo
30、t(); connect(eightBtn,SIGNAL(clicked(bool),this,SLOT(eightBtnSlot(); connect(nineBtn,SIGNAL(clicked(bool),this,SLOT(nineBtnSlot(); connect(divideBtn,SIGNAL(clicked(bool),this,SLOT(divideBtnSlot(); connect(cubeBtn,SIGNAL(clicked(bool),this,SLOT(cubeBtnSlot(); connect(tanBtn,SIGNAL(clicked(bool),this,
31、SLOT(tanBtnSlot(); connect(fourBtn,SIGNAL(clicked(bool),this,SLOT(fourBtnSlot(); connect(fiveBtn,SIGNAL(clicked(bool),this,SLOT(fiveBtnSlot(); connect(sixBtn,SIGNAL(clicked(bool),this,SLOT(sixBtnSlot(); connect(mulBtn,SIGNAL(clicked(bool),this,SLOT(mulBtnSlot(); connect(logBtn,SIGNAL(clicked(bool),t
32、his,SLOT(logBtnSlot(); connect(InBtn,SIGNAL(clicked(bool),this,SLOT(InBtnSlot(); connect(oneBtn,SIGNAL(clicked(bool),this,SLOT(oneBtnSlot(); connect(twoBtn,SIGNAL(clicked(bool),this,SLOT(twoBtnSlot(); connect(threeBtn,SIGNAL(clicked(bool),this,SLOT(threeBtnSlot(); connect(subBtn,SIGNAL(clicked(bool)
33、,this,SLOT(subBtnSlot(); connect(recipBtn,SIGNAL(clicked(bool),this,SLOT(recipBtnSlot(); connect(tenxBtn,SIGNAL(clicked(bool),this,SLOT(tenxBtnSlot(); connect(zeroBtn,SIGNAL(clicked(bool),this,SLOT(zeroBtnSlot(); connect(pointBtn,SIGNAL(clicked(bool),this,SLOT(pointBtnSlot(); connect(addBtn,SIGNAL(c
34、licked(bool),this,SLOT(addBtnSlot(); connect(factBtn,SIGNAL(clicked(bool),this,SLOT(factBtnSlot(); connect(equalBtn,SIGNAL(clicked(bool),this,SLOT(equalBtnSlot(); connect(expBtn,SIGNAL(clicked(bool),this,SLOT(expBtnSlot(); connect(sinhBtn,SIGNAL(clicked(bool),this,SLOT(sinhBtnSlot(); connect(coshBtn
35、,SIGNAL(clicked(bool),this,SLOT(coshBtnSlot(); connect(tanhBtn,SIGNAL(clicked(bool),this,SLOT(tanhBtnSlot(); connect(xyBtn,SIGNAL(clicked(bool),this,SLOT(xyBtnSlot(); connect(modBtn,SIGNAL(clicked(bool),this,SLOT(modBtnSlot();/設置窗口布局void Caculator:widgetLayout() QGridLayout *mainLayout = new QGridLa
36、yout(this);/網格布局 mainLayout->setSizeConstraint(QLayout:SetFixedSize); mainLayout->addWidget(showTextEdit , 0,0 ,1 ,7); mainLayout->addWidget(showResultEdit,1,0,1,7); mainLayout->addWidget(clearMemoryBtn,2,0); mainLayout->addWidget(readMemoryBtn,2,1); mainLayout->addWidget(setMemory
37、Btn,2,2); mainLayout->addWidget(signBtn,2,3); mainLayout->addWidget(sqrtBtn,2,4); mainLayout->addWidget(sinBtn,2,5); mainLayout->addWidget(sinhBtn,2,6); mainLayout->addWidget(backBtn,3,0); mainLayout->addWidget(ceBtn,3,1); mainLayout->addWidget(clearBtn,3,2); mainLayout->addW
38、idget(divideBtn,3,3); mainLayout->addWidget(squBtn,3,4); mainLayout->addWidget(cosBtn,3,5); mainLayout->addWidget(coshBtn,3,6); mainLayout->addWidget(sevenBtn,4,0); mainLayout->addWidget(eightBtn,4,1); mainLayout->addWidget(nineBtn,4,2); mainLayout->addWidget(mulBtn,4,3); mainLa
39、yout->addWidget(cubeBtn,4,4); mainLayout->addWidget(tanBtn,4,5); mainLayout->addWidget(tanhBtn,4,6); mainLayout->addWidget(fourBtn,5,0); mainLayout->addWidget(fiveBtn,5,1); mainLayout->addWidget(sixBtn,5,2); mainLayout->addWidget(subBtn,5,3); mainLayout->addWidget(logBtn,5,4)
40、; mainLayout->addWidget(InBtn,5,5); mainLayout->addWidget(xyBtn,5,6); mainLayout->addWidget(oneBtn,6,0); mainLayout->addWidget(twoBtn,6,1); mainLayout->addWidget(threeBtn,6,2); mainLayout->addWidget(addBtn,6,3); mainLayout->addWidget(recipBtn,6,4); mainLayout->addWidget(tenxB
41、tn,6,5); mainLayout->addWidget(modBtn,6,6); mainLayout->addWidget(zeroBtn,7,0); mainLayout->addWidget(pointBtn,7,1); mainLayout->addWidget(left_bracket,7,2); mainLayout->addWidget(right_bracket,7,3); mainLayout->addWidget(factBtn,7,4); mainLayout->addWidget(expBtn,7,5); mainLayo
42、ut->addWidget(equalBtn,7,6);/按鈕樣式void Caculator:pushButtonStyle(QPushButton *pushButton) QFont font("宋體",12); font.setBold(true); QString styleStr="border:1px solid gray;border-radius:5px;" pushButton->setStyleSheet(styleStr); pushButton->setFont(font); pushButton->se
43、tFixedSize(45,35);/輸入框樣式void Caculator:lineEditStyle(QLineEdit *lineEdit,int height) QFont font("宋體",14); font.setBold(true); QString styleStr="border:1px solid gray;border-radius:10px;" lineEdit->setStyleSheet(styleStr); lineEdit->setReadOnly(true); lineEdit->setAlignme
44、nt(Qt:AlignRight); lineEdit->setFont(font); lineEdit->setMinimumHeight(height);/設置數字void Caculator:setNumber(int num) showTextEdit->setText(showTextEdit->text().trimmed() + QString:number(num);/設置+、-、*、/、.、)等符號void Caculator:setOperation(int oper) if(!showTextEdit->text().isEmpty() in
45、t endIndex=showTextEdit->text().length()-1; QChar endChar=showTextEdit->text().at(endIndex); if(endChar!='+'&&endChar!='-'&&endChar!='*'&&endChar!='/'&&endChar!='.'&&endChar!='(' &&endChar!='%
46、39;&&endChar!='') switch (oper) case 1: showTextEdit->setText(showTextEdit->text() + "+"); break; case 2: showTextEdit->setText(showTextEdit->text() + "-"); break; case 3: showTextEdit->setText(showTextEdit->text() + "*"); break; case 4
47、: showTextEdit->setText(showTextEdit->text() + "/"); break; case 5: showTextEdit->setText(showTextEdit->text() + "."); break; case 6: showTextEdit->setText(showTextEdit->text() + ")"); break; case 7: showTextEdit->setText(showTextEdit->text() + &
48、quot;"); break; case 8: showTextEdit->setText(showTextEdit->text() + "%"); break; default: break; /計算x2、x3、sin、cos、tan等void Caculator:caculate(int cacu) double result; if(!showTextEdit->text().isEmpty() QString text=showTextEdit->text(); int endIndex=text.length()-1; QChar
49、 endChar=text.at(endIndex); if(endChar!='+'&&endChar!='-'&&endChar!='*'&& endChar!='/'&&endChar!='.'&&endChar!='('&&endChar!=')' &&endChar!='%'&&endChar!='') double
50、 text_to_double=text.toDouble(); switch (cacu) case 1:/開方 if(text_to_double>=0) result=sqrt(text_to_double); showTextEdit->setText("sqrt("+QString:number(text_to_double)+")"); else QMessageBox:warning(this,"警告","<b>被開方數不能為負!</b>"); return; br
51、eak; case 2:/平方 result=pow(text_to_double,2.0); showTextEdit->setText("square("+QString:number(text_to_double)+")"); break; case 3:/立方 result=pow(text_to_double,3.0); showTextEdit->setText("cube("+QString:number(text_to_double)+")"); break; case 4:/log10
52、 result=log10(text_to_double); showTextEdit->setText("log("+QString:number(text_to_double)+")"); break; case 5:/1/x result=pow(text_to_double,-1.0); showTextEdit->setText("reciproc("+QString:number(text_to_double)+")"); break; case 6:/階乘 result=factorial(int)text_to_double); showTextEdit->setText("factorial("+QString:number(text_to_double)+")"); break; case 7:/sin result=sin(text_to_double); showT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統編版語文五年級下冊第8課《紅樓春趣》精美課件
- 江蘇南京師范大附屬中學2024-2025學年中考模擬試卷(4)物理試題含解析
- 蘭州大學《自動化專業導論與研討》2023-2024學年第一學期期末試卷
- 山西省運城市鹽湖區達標名校2025年學業水平考試英語試題模擬仿真卷(4)含答案
- 外交學院《商業廣告學》2023-2024學年第二學期期末試卷
- 山東省臨朐市重點達標名校2025屆普通高中初三線上統一測試化學試題理試題含解析
- 徐州醫科大學《生物技術與可持續發展》2023-2024學年第二學期期末試卷
- 吉林省長春市東北師范大附屬中學2025年初三下學期開學回頭考數學試題含解析
- 樂山職業技術學院《柏拉圖》2023-2024學年第一學期期末試卷
- 同濟大學《Python數據分析》2023-2024學年第一學期期末試卷
- 《企業安全生產費用提取和使用管理辦法》
- 華為培訓教程01網絡基礎
- (高清版)DZT 0205-2020 礦產地質勘查規范 巖金
- 《嬰幼兒感覺統合訓練》課件-前庭覺
- 人教版數學七年級下冊期中考試試卷8
- 管道完整性管理基礎知識課件
- 學生戶外抓魚活動方案
- 材料方案設計
- 購車金融方案
- 墻面油漆工程的詳細施工工序
- 血液透析水處理系統通用課件
評論
0/150
提交評論