零零散散學了段時間的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 計算器的實現 上面只是暫時生成了計算機...