Qt5 計算器的實現

2021-09-10 02:33:16 字數 2938 閱讀 5723

零零散散學了段時間的qt5,今天動手寫了個計算器,太開心了。在這裡,認真總結一下,其實在qt裡寫帶gui的程式,其實核心演算法,直接把c/c++**新增進去就可以了,所以還是要打牢c/c++的演算法基礎,真的是萬變不離其宗啊。

首先看我的程式結構: 

我們都知道,計算器稍微麻煩點的就是中綴表示式轉字尾表示式,以及字尾表示式的計算,我這裡func.c就是這篇部落格中綴表示式轉字尾,字尾表示式計算裡的**,當然標頭檔案不一樣,大家可以比對一下

func.h

#ifndef func_h

#define func_h

#include#include#include#includeusing namespace std;

int instack(string c);

int outstack(string c);

vectorinfixtopostfix(string str);

bool operation(string tmp,stack&stk);

double postfix2ans(vectorexp);

void test();

#endif // func_h

widget.h

#ifndef widget_h

#define widget_h

#include #include #include #include #include class widget : public qwidget

;#endif // widget_h

func.cpp,就是c++的程式

#include"func.h"

int instack(string c)//堆疊內部的運算子優先順序

int outstack(string c)//堆疊外的運算子優先順序

vectorinfixtopostfix(string str)

stk.push(st);

}else

}while(!stk.empty())

stk.pop();

}return res;

}bool operation(string tmp,stack&stk)

widget::~widget()

void widget::no_0btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("0"));

}void widget::no_1btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("1"));

}void widget::no_2btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("2"));

}void widget::no_3btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("3"));

}void widget::no_4btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("4"));

}void widget::no_5btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("5"));

}void widget::no_6btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("6"));

}void widget::no_7btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("7"));

}void widget::no_8btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("8"));

}void widget::no_9btnclicked()

displaylineedit->settext(displaylineedit->text()+=tr("9"));

}void widget::addbtnclicked()

void widget::minusbtnclicked()

void widget::multiplybtnclicked()

void widget::dividebtnclicked()

void widget::pointbtnclicked()

void widget::equalbtnclicked()

else

equalflag = true;

calculatorflag = 0;

}

main.cpp

#include "widget.h"

程式執行結果:

參考了這位朋友的**,不過他的思路可能沒理清,只能計算2個數的加減乘除,不能小數,也沒有用到中綴表示式和字尾表示式,不過還是非常寫寫,我在ta的**上前進了一大步。衷心地感謝。 

calculator-master.zip

QT實現計算器

1 新建calculatorstandard類和工程檔案 2 使用水平布局和把按鍵依次新增 ui介面如下圖所示 3 在calculatorstandard.h中宣告用到的槽函式 private slots void digitclicked 數字按鍵 void addandsubclicked 加減...

Qt實現 計算器

該計算器主要通過lineedit獲取和顯示數字,通過tableview顯示計算過程。通過tableview顯示計算的過程,qlineedit獲取輸入的數字,qcombobox實現不同的計算型別。效果 計算 void mainwindow on btn cal clicked else if resu...

Qt 計算器的實現

介面的 實現 include widget.h include include include w show w setfixedsize w width w height ret a.exec delete w return ret 執行的結果如圖所示 qt 計算器的實現 上面只是暫時生成了計算機...