qt程式設計學習教程之計算器(一)GUI設計

2021-08-17 23:22:03 字數 2628 閱讀 5375

乙個計算器的開發是學習gui程式設計中最常見的練習專案之一。博主作為qt初學者,深知初始入門qt之艱難,故從初學者的角度,一步一步完成計算器程式設計,望對後人有所作用。一下**截圖為程式設計步驟的拆解,文章最後附上**全文。

需求:使用qt完成乙個支援浮點數運算,正負值識別的多位數加減乘除括號的四則運算計算器。最終結果如下圖所示

需求分析:

1.gui設計介面

2.計算

2.1分離表示式字串

2.2中綴表示式改為字尾表示式

2.3由字尾表示式計算求值

一.gui設計

讓我們分析乙個簡易的計算器介面,由乙個視窗qwidget,乙個文字框qlineedit,20個按鈕qpushbutton組成。

現在讓我們開始一步步將構想**化。

1.1視窗類的生成

目的:生成乙個光禿禿,什麼都沒有的視窗,如下圖

在乙個空專案中增添視窗類class qcalculatorui,專案組織如下

qcalculatorui.h初步構建如下:

#include class qcalculatorui:public qwidget;
這是乙個未完成的.標頭檔案,因為後續會涉及到qpushbutton,qlineedit指標的動態生成,故採用二階構造的方式設定類的建構函式(二階構造的相關知識可查閱

qcalculatorui.cpp初步構建如下:

#include "qcalculatorui.h"

qcalculatorui::qcalculatorui()

qcalculatorui::~qcalculatorui()

qcalculatorui* qcalculatorui::newinstance()

return ret;

}void qcalculatorui::show()

針對main函式,描述如下:

int main(int argc, char *argv)

return ret;

}由此,生成程式,便可得到上圖所示的空視窗。

因為計算器,不需要最大化最小化按鈕,同時視窗的邊框不允許拉伸,所以我們加上兩個引數設定。

在qcalculator.cpp做如下修改

qcalculatorui::qcalculatorui(): qwidget(null, qt::windowclosebuttonhint)

......

void qcalculatorui::show()

再生成程式如下,已沒有最大化最小化按鈕,視窗邊框不能拉伸。

1.2文字框qlineedit與按鈕qpushbutton的生成修改qcalculatorui.h檔案,增添construct()函式用來作為二階建構函式中關於物件動態生成的第二階構造

#include #include //新增

#include //新增

class qcalculatorui:public qwidget;

construct()函式如下,內容為按鈕和文字框的生成

bool qcalculatorui::construct()else

//按鈕的動態生成

const char* btntext[20] = ;

for(int i = 0; i != 4 && ret; ++i)

for(int j = 0; j!= 5 && ret; ++j)else

}return ret;

}

修改newinstance()例項化函式,將construct()函式加進去

qcalculatorui* qcalculatorui::newinstance()

return ret;

}

執行程式,得到結果如下

《學習QT 專案一 簡易計算器

計算器的介面如下圖所示 其中訊號匹配的的使用方法如下 在堆上建立物件 將按鍵物件與訊號匹配器連線 將按鍵與要傳送的字串匹配 連線訊號匹配器與槽函式,修改lineedite的內容 void classname slot fuction qstring str 當要大量處理一系列相似的控制項時,例如要處...

GTK入門學習 布局練習之計算器

接下來,我們做乙個布局練習。例如以下圖 我們用 布局實現,布局參考座標例如以下 這裡我們用到行編輯控制項 gtkentry 行編輯的建立 gtkwidget gtk entry new void 返回值 行編輯指標行 void gtk entry set text gtkentry entry,co...

Java程式設計 計算器(一)

1.設計介面 2.設計思路 設計出介面 jtextfield在定義的時候建構函式可以給乙個string引數作為初始內容,比如 jtextfield jf new jtextfield a 這樣介面上的jtextfield顯現出來時一開始顯示的內容就是a了 計算器中可以一開始顯示0 定義兩個屬性 最好...