畢業(yè)論文一種基于Qt的科學計算器系統(tǒng)_第1頁
畢業(yè)論文一種基于Qt的科學計算器系統(tǒng)_第2頁
畢業(yè)論文一種基于Qt的科學計算器系統(tǒng)_第3頁
畢業(yè)論文一種基于Qt的科學計算器系統(tǒng)_第4頁
畢業(yè)論文一種基于Qt的科學計算器系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、畢業(yè)論文一種基于Qt的科學計算器系統(tǒng) 畢業(yè)設計報告 論文 題目:一種基于Qt的科學計算器系統(tǒng) 所 屬 系專 業(yè)科學與技術(shù)學 號姓 名指導教師72013.2 - 2013.5設計地點畢業(yè)設計報告(論文)誠 信 承 諾本人承諾所呈交的畢業(yè)設計報告(論文)及取得的成果是在導師指導下完成,引用他人成果的部分均已列出參考文獻。如論文涉及任何知識產(chǎn)權(quán)糾紛,本人將承擔一切責任。學生簽名: 日期:一種基于Qt的科學計算器系統(tǒng)摘 要關鍵詞:科學計算器;進制轉(zhuǎn)換;算式提??; Qt English titleAbstractMankind has entered the information age. The r

2、apid development of information technology, the calculator has entered all spheres of life of the people, an integral part of modern life, a large complex calculations the human brain is incapable of, and error-prone. For Qt scientific calculator, adding a lot of features, a lot of convenience to th

3、e user, and improve the operational efficiency of the user.From the project background, requirements analysis, software design and other aspects of a detailed description of the development of the design process of the Qt scientific calculator. The software uses the Linux write code, Qt interface de

4、sign to develop. The calculator contains a simple calculation functions.The calculator interface visualization, user-friendly operation, and the calculator formula extraction and storage features make the formula quicker and more convenient for the user to carry out a large number of complex scienti

5、fic calculations provide an effective guarantee.Keyword: Scientific calculators; binary conversion; formula extract; Qt 目 錄摘 要IAbstractII第一章 緒論11.1 項目背景11.2 項目內(nèi)容和要求1 題目介紹1 題目要求11.3 項目特點及意義1第二章 需求分析32.1 功能需求一32.2 功能分析32.3 安全性分析42.4 可行性分析42.5 系統(tǒng)設計工具4 fedora技術(shù)簡介4 QSqlite數(shù)據(jù)庫技術(shù)4第三章 軟件設計63.1 數(shù)據(jù)庫設計6 實體屬性圖6

6、 關系模型設計6 數(shù)據(jù)庫結(jié)構(gòu)設計7第四章 簡單的計算器84.1項目目的84.2項目內(nèi)容84.3項目步驟8第五章 計算器程序的實現(xiàn)11第六章 源代碼的分析說明14第七章 編譯運行20第八章 計算器程序的移植21致 謝23參考文獻241.1 項目背景隨著計算機的飛速發(fā)展,人類已經(jīng)進入信息化時代。信息技術(shù)發(fā)展日新月異,計算已經(jīng)進入人們生活的各個領域,在現(xiàn)代生活中不可或缺,大型復雜的計算是人腦所不能勝任的,而且較易出錯。以前的計算器只能進行簡單的加減乘除四則運算,而且只能進行單步運算,如果遇到較長的算式時就得讓用戶一步一步輸入,浪費很多時間,還會可能遺漏數(shù)據(jù)內(nèi)容,讓用戶得多次輸入算式驗證,如果一次錯誤

7、就得驗證多遍,浪費時間效率低下。隨著科技的發(fā)展,人們所學習的內(nèi)容越來越多,需求越來越廣泛。本文設計的計算器擴大了用戶的運算領域。并且考慮到用戶有時常用一些算式,提高了用戶的效率,方便了用戶的操作,本文設計中主要采用的技術(shù)為Qt ,Qt 為設計可視化界面,通過軟件的設計可以快速設計出自己需要的界面,然后再到編寫各個按鍵的槽函數(shù)與算法。上網(wǎng)查找資料,看書查找例子。1.2 項目內(nèi)容和要求 題目介紹設計一個功能齊備的科學計算器,具有算式編輯計算和普通計算窗口。具體要求如下:可同時出現(xiàn)二、八、十六、十等不同進制,并可實現(xiàn)大中小括號和各類不同函數(shù)及位運算。三角函數(shù)可設置度或弧度。設計實現(xiàn)文件處理窗口,可實

8、現(xiàn)算式的添加、刪除、存儲和提取。普通計算窗口:支持二、八、十六、十等不同進制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換,當輸入回車鍵或等號鍵時直接給出當前算式的運算結(jié)果,算式計算和編輯可同時交叉進行,設置中間變量,方便運算過程中中間數(shù)據(jù)的存儲或提取插入。編輯、存儲、粘貼、修改、計算算式長度可達256個字符實現(xiàn)大中小括號和各類不同函數(shù)及位運算支持二、八、十六、十等不同進制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換顯示當前日期時間本文對計算器進行設計,比傳統(tǒng)計算其增加了許多功能,使用更方便,主要有以下幾個特點:(1)計算速度快,節(jié)省時間、人力(2)普通窗口可以進行各進制的加減乘除運算。(3)科學計算窗口可

9、以進行小括號、中括號、大括號,正弦、余弦,角度,弧度,包括普通窗口的運算。(4)可對算式進行存儲,添加,刪除等功能。 。 第二章 需求分析2.1 功能需求一在程序設計中,通過設計、編制、調(diào)試一個模擬計算器的程序,加深對語法及語義分析原理的理解,并實現(xiàn)對命令語句的靈活應用。在程序設計中,可以用兩種方法解決問題:一是傳統(tǒng)的結(jié)構(gòu)化程序設計方法,二是更先進的面向?qū)ο蟪绦蛟O計方法。而在面向?qū)ο蟪绦蛟O計中關鍵是如何將問題域中的實體(即日常所見的概念)抽取出來,作為C+程序中的類,而屬性與行為作為類的兩類要素通常是必不可少的,甚至還應考慮類必須滿足的約束。我們?nèi)粘I畹拈_支,大額數(shù)字或是多倍小數(shù)的計算都需要

10、計算器的幫助,處理數(shù)字的開方、正余弦都離不開計算器。雖然現(xiàn)在的計算器價格比較低廉,但是功能過于簡單的不能滿足個人需求,功能多的價格較貴,操作不便不說,很多功能根本用不到。所以,我們想到可不可以用自己的所學為自己設計開發(fā)一個屬于自己的簡單計算器來完成日常生活的需求。計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、除、開方、求倒數(shù)等簡單運算的工具。要實現(xiàn)計算功能,可以用C+和Qt的知識編寫程序來解決此問題。該計算器大大的降低了數(shù)字計算的難度及提高了計算的準確度和精確度。該計算器使用非常簡單和方便,對廣大中小學生的學習有巨大幫助作用,也對在職人員的工作有點幫助作用。本文的程序設計設計工作環(huán)境

11、為Linux +QT Creator ,在程序設計中,采用了結(jié)構(gòu)化與面向?qū)ο髢煞N解決問題的方法。2.2 功能分析1).普通窗口計算設計這一模塊要求進行加減乘除運算。支持二、八、十六、十等不同進制數(shù)據(jù)的直接輸入、計算和數(shù)制間的相互轉(zhuǎn)換,當輸入回車鍵或等號鍵時直接給出當前算式的運算結(jié)果,算式計算和編輯可同時交叉進行,設置中間變量,方便運算過程中中數(shù)據(jù)的存儲或提取插入??梢詫λ闶竭M行編輯、存儲、粘貼、修改、計算。算式長度可達256個字符算式內(nèi)可同時出現(xiàn)二、八、十六、十等不同進制,并可實現(xiàn)大中小括號和各類不同函數(shù)及位運算。三角函數(shù)可設置度或弧度。設計實現(xiàn)文件處理窗口,可實現(xiàn)算式的添加、刪除、存儲和提取

12、。使用Qt自帶的QSqlite數(shù)據(jù)庫,進行存儲算式,對算式進行添加、保存、刪除功能,并且在幫助功能上也使用此數(shù)據(jù)庫,把各個按鍵的功能村如此數(shù)據(jù)庫中。還可以添加和刪除,非常方便。并且此程序界面使用Qt designer進行布局,這樣對各個控件進行布局,排版結(jié)構(gòu)時不容易出錯,快速便捷。提高軟件的安全性。2.4 可行性分析計算器是日常生活中非常便捷有效的工具,它具有普通計算和科學計算,能實現(xiàn)加減乘除等普通功能,還可以實現(xiàn)算是運算,并且可以進行進制裝換,不再局限于十進制,他大大的提高了我們的效率,節(jié)省了時間,可促進科技的發(fā)展,還可以用來存儲算式,可以方便下次使用,采用Qt編寫,Qt designer設

13、計的界面美觀,還可以用拖拽功能進行設計控件的位置、大小、屬性、結(jié)構(gòu)等功能,這樣在編寫代碼時就不用浪費時間對控件進行聲明等代碼了。這降低了程序員的難度,提高了程序員的效率,并且上手快,具有一定的可行性。技術(shù)經(jīng)濟分析是研究技術(shù)領域的經(jīng)濟問題和經(jīng)濟規(guī)律的科學,是研究一定技術(shù)條件下如何提高經(jīng)濟效果的科學,是技術(shù)與經(jīng)濟的交叉。在技術(shù)上,主要是采用linux,可以進行復雜的數(shù)據(jù)庫操作,進行算是的增、刪、改、查等功能。用Qt編寫,有些類似C+,但大多數(shù)都是Qt封裝好的函數(shù)。在linux中安裝Qt軟件,配置環(huán)境變量,并安裝Qt插件。從而用Qt 進行制作界面,做出的效果既美觀又快捷方便。使用Qt具有良好美觀的界

14、面,必要的信息存儲和和較好的健壯性,使用人員能夠快捷簡單的進行操作,可以快捷的獲得計算結(jié)果,給人們帶來方便,對人們的生活有很大的幫助。2.5 系統(tǒng)設計工具 fedora技術(shù)簡介Fedora (第七版以前為Fedora Core)是一款基于 Linux 的操作系統(tǒng),也是一組維持計算機正常運行的軟件集合。Fedora 由Fedora Project社區(qū)開發(fā)、紅帽公司贊助,目標是創(chuàng)建一套新穎、多功能并且自由和開源的操作系統(tǒng)。Fedora 項目以社區(qū)的方式工作,引領創(chuàng)新并傳播自由代碼和內(nèi)容,是世界各地愛好、使用和構(gòu)建自由軟件的社區(qū)朋友的代名詞。Fedora基于Red Hat Linux,在Red Ha

15、t Linux終止發(fā)行后,紅帽公司計劃以Fedora來取代Red Hat Linux在個人領域的應用,而另外發(fā)行的Red Hat Enterprise Linux(Red Hat企業(yè)版Linux,RHEL)則取代Red Hat Linux在商業(yè)應用的領域。Fedora的功能對于用戶而言,它是一套功能完備、更新快速的免費操作系統(tǒng),而對贊助者Red Hat公司而言,它是許多新技術(shù)的測試平臺,被認為可用的技術(shù)最終會加入到Red Hat Enterprise Linux中。SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設計目標是嵌入式的簡單的來說QT Designer是一

16、個GUI的工具這個工具可以幫助我們來加快寫QT 程的速度.利用QT Designer可以用一種所見既所得的方式來產(chǎn)生QT程的GUI介面的程式碼.通過增加一些功能就可以完成一個程了.利用QT Designer可以非??焖俚膶W會QT而我們這里說利用QT Designer來學習QT而不是利用QT Designer來寫QT這里的區(qū)別就在于QT Designer所產(chǎn)生的程碼有些繁瑣起來也比較的慢些我們這里只是利用QT Designer來幫助我們學習而不是直接去QT Designer生成的程qt-win-opensource-vs2008.exe,在安裝vs的qt插件qt-vs-addin-.exe,在配

17、置環(huán)境變量:QT your Qt-root-folder;在 PATH中添加: “;%QT%bin”。然后就可以用Qt designer中的控件進行制作程序界面,并且可以直接修改屬性,這樣可以在代碼量上節(jié)省不少時間。(2)Qt技術(shù)介紹QT 是一個跨平臺的 C+ GUI 應用構(gòu)架,它提供了豐富的窗口部件集,具有面向?qū)ο?、易于擴展、真正的組件編程等特點,更為引人注目的是目前 Linux 上最為流行的 KDE 桌面環(huán)境就是建立在 QT 庫的基礎之上。支持 Linux 平臺。伴隨著 KDE 的快速發(fā)展和普及,QT 很可能成為 Linux 窗口平臺上進行軟件開發(fā)時的 GUI 首選。信號和槽機制是 QT

18、的核心機制,要精通 QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應用于對象之間的通信,它是 QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。信號和槽是 QT 自行定義的一種通信機制,它獨立于標準的 C/C+ 語言,因此要正確的處理信號和槽,必須借助一個稱為 moc(Meta Object Compiler)的 QT 工具,該工具是一個 C+ 預處理程序,它為高層次的事件處理自動生成所需要的附加代碼。在我們所熟知的很多 GUI 工具包中,窗口小部件 widget 都有一個回調(diào)函數(shù)用于響應它們能觸發(fā)的每個動作,這個回調(diào)函數(shù)通常是一個指向某個函數(shù)的指針。但是,在 QT 中信

19、號和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程序更為簡潔明了。 信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調(diào)函數(shù)那樣產(chǎn)生 core dumps。在這里我設計的主窗口為:QWidget,而在幫助窗口為:QDialog。第三章 軟件設計3.1 數(shù)據(jù)庫設計數(shù)據(jù)庫在一個管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)庫的完整性和一致性。同時,合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實現(xiàn)。 實體屬性圖E-R圖是實體之間聯(lián)系的一個簡單表述,下面詳細介紹各實體的屬性:圖3.1算式實

20、體屬性圖算式實體屬性如圖3.1,包括算式id,算式名字。圖3.2按鍵信息實體屬性圖按鍵信息實體屬性如圖3.2,包括按鍵編號,按鍵名,按鍵功能。 關系模型設計本系統(tǒng)中主要的關系模型設計如下:算式信息(編號,算式名);按鍵信息(編號,按鍵名,按鍵功能); 數(shù)據(jù)庫結(jié)構(gòu)設計每個數(shù)據(jù)文件均有一張定義表。其數(shù)據(jù)庫各表的表頭信息更為詳細的反映數(shù)據(jù)間的關系。本系統(tǒng)數(shù)據(jù)庫的內(nèi)容包括算式表、幫主功能表。表的具體設計如下所示: 1 算式表用來存儲算是編號和算式名,表名:message。本表用來存儲已用戶常用的算式,其中可以對算式進行保存、刪除、修改,方便用戶及使用到常用的式子,提高用戶效率。算式表如表3.1所示。表

21、3.1算式表Int4算是編號(Id)算是名QString16算式(formulanumber) 2 按鍵信息表用來存儲按鍵編號,按鍵名,按鍵功能,表名:helpmessage。本表用來實現(xiàn)幫助功能,存儲幫助功能中按鍵的信息,可以查看所有的按鍵功能,也可以看單個按鍵信息,還可以對案件信息進行增加和刪除。按鍵表如表3.2所示。表3.2按鍵表字段名稱數(shù)據(jù)類型長度備注編號自動編號長整型為主碼、唯一(id)按鍵名Vchar1按鍵名(helpname)功能Vchar1按鍵功能(explain)第四章 簡單的計算器4.1項目目的QtCreator的簡單操作。(2)了解Qt程序編寫框架。(3)了解信號和槽機制

22、,熟練掌握信號與槽在應用程序中的使用。4.2項目內(nèi)容(1)查看API手冊,學習簡單的Qt類的使用,如QLineEdit、QPushButton等。(2)用QtCreator創(chuàng)建工程,用Qt編寫計算器程序。(3)對計算器程序進行移植。4.3項目步驟創(chuàng)建工程1)打開QtCreator,如圖F-1所示。圖F-12)選擇File- New File or Project,然后在彈出的對話框中選擇Other Project- Empty Qt project(如圖F-2所示),然后進入下一步。圖23)定義新工程的工程名并選擇保存路徑(如圖F-3所示),然后進入下一步。圖34)選擇Qt版本,這里選擇使,取

23、消對Qt in PATH的選擇(如圖4所示),然后進入下一步,完成新工程的創(chuàng)建(如圖F-5所示)。圖F-4圖F-5第五章 計算器程序的實現(xiàn)主要工作:一是實現(xiàn)計算器的圖形界面;二是實現(xiàn)按鍵事件和該事件對應的功能綁定,即信號和對應處理槽函數(shù)的綁定。圖形界面的實現(xiàn)通過分析可知,需要16個按鍵和一個顯示框,同時考慮到整體的排布,還需要水平布局器和垂直布局器。通過組織這些類我們可以實現(xiàn)一個簡單的帶有數(shù)字09,可以進行簡單四則運算且具有清屏功能的計算器。對于這些類的具體操作會在后面的代碼中詳細說明。5.1信號和對應槽函數(shù)的綁定分析計算器的按鍵我們可以把按鍵事件分為以下三類,一是簡單的數(shù)字按鍵,主要進行數(shù)字

24、的錄入,這類按鍵包括按鍵09;二是運算操作鍵,用于輸入數(shù)學運算符號,進行數(shù)學運算和結(jié)果的顯示,這類按鍵包括“+”,“-”,“*”,“/”,“ ”;三是清屏操作鍵,用于顯示框顯示信息的清除。5.2進入剛才創(chuàng)建的空工程,雙擊左側(cè)的C,在主編輯框中目前顯示C的內(nèi)容為空,如圖F-6所示。這是因為目前什么文件都沒有添加的緣故。圖65.3添加文件calculator.h在工程Calculator上面點擊右鍵,然后點擊Add New,選擇添加C+ Header File(如圖F-7所示),進入下一步后輸入文件名calculator.h(如圖F-8所示),然

25、后完成文件的添加。圖7圖F-85.4添加文件calcul與添加文件calculator.h的過程類似,只是在選擇文件類型時選擇為C+ Source File。完成后可以查看C文件的內(nèi)容,整個工程的文件結(jié)構(gòu)如圖F-9所示。圖F-9第六章 源代碼的分析說明6.1對calculator.h源代碼的簡要說明#ifndef CALCULATOR_H#define CALCULATOR_H /對calculator.h頭文件的聲明#include /包含主窗體類#include /包含按鍵類#include /包含垂直布局器類#include /包含水平布局器類#include

26、/包含顯示框類class Calculator : publicQWidget/計算器繼承自主窗體類 Q_OBJECT /必須加上這句,如果要調(diào)用信號,槽函數(shù)的操作的話public: Calculator ; /計算器類的構(gòu)造函數(shù) Calculator ; /計算器類的析構(gòu)函數(shù)public slots: /定義各個按鍵按下后對應操作處理的槽函數(shù)voidzeroButtonPress ;voidoneButtonPress ;voidtwoButtonPress ;voidthreeButtonPress ;voidfourButtonPress ;voidfiveButtonPress ;vo

27、idsixButtonPress ;voidsevenButtonPress ;voideightButtonPress ;voidnineButtonPress ;voidaddButtonPress ;voidsubButtonPress ;voidmulButtonPress ;voiddivButtonPress ;voidclearButtonPress ;voidequButtonPress ;private:QLineEdit *operateEdit;/聲明顯示框QPushButton *zeroButton;/聲明數(shù)字按鍵1QPushButton *oneButton;QPu

28、shButton *twoButton;QPushButton *threeButton;QPushButton *fourButton;QPushButton *fiveButton;QPushButton *sixButton;QPushButton *sevenButton;QPushButton *eightButton;QPushButton *nineButton;QPushButton *clearButton;/聲明運算符按鍵QPushButton *addButton;QPushButton *subButton;QPushButton *divButton;QPushBut

29、ton *mulButton;QPushButton *equButton;QHBoxLayout *firstLayout;/聲明水平布局器,該布局器主要對16個按鍵進行布局QHBoxLayout *secondLayout;QHBoxLayout *thirdLayout;QHBoxLayout *fourthLayout;QVBoxLayout *mainLayout;/聲明垂直布局器,該布局器主要對主窗體上面的空間進行排布QString input1;/計算器第一個運算操作數(shù)QString input2;/計算器第二個運算操作數(shù)char operate;/運算符 ;#endif/ CA

30、LCULATOR_H對calculator.cpp源代碼的簡要說明首先是構(gòu)造函數(shù)的實現(xiàn):Calculator:Calculator operateEdit newQLineEdit this ;/初始化顯示框operateEdit- setReadOnly true ; /設置顯示框為只讀operateEdit- setText tr 0 ;/初始化顯示框顯示數(shù)據(jù)為0zeroButton newQPushButton;/初始化按鍵zeroButton- setText tr 0 ;/設置按鍵上顯示的標簽,以下對按鍵相關的操作類似oneButton newQPushButton;oneButto

31、n- setText tr 1 ;twoButton newQPushButton;twoButton- setText tr 2 ;threeButton newQPushButton;threeButton- setText tr 3 ;fourButton newQPushButton;fourButton- setText tr 4 ;fiveButton newQPushButton;fiveButton- setText tr 5 ;sixButton newQPushButton;sixButton- setText tr 6 ;sevenButton newQPushButto

32、n;sevenButton- setText tr 7 ;eightButton newQPushButton;eightButton- setText tr 8 ;nineButton newQPushButton;nineButton- setText tr 9 ;clearButton newQPushButton;clearButton- setText tr Clear ;addButton newQPushButton;addButton- setText tr + ;subButton newQPushButton;subButton- setText tr - ;mulButt

33、on newQPushButton;mulButton- setText tr * ;divButton newQPushButton;divButton- setText tr / ;equButton newQPushButton;equButton- setText tr ;firstLayout newQHBoxLayout;/初始化水平布局器firstLayoutfirstLayout- addWidget zeroButton ; /把按鍵zeroButton添加到firstLayoutfirstLayout- addWidget oneButton ; /把按鍵oneButton

34、添加到firstLayoutfirstLayout- addWidget twoButton ; /把按鍵twoButton添加到firstLayoutfirstLayout- addWidget addButton ; /把按鍵threeButton添加到firstLayout,以下對水平布局器的操作類似secondLayout newQHBoxLayout;secondLayout- addWidget threeButton ;secondLayout- addWidget fourButton ;secondLayout- addWidget fiveButton ;secondLay

35、out- addWidget subButton ;thirdLayout newQHBoxLayout;thirdLayout- addWidget sixButton ;thirdLayout- addWidget sevenButton ;thirdLayout- addWidget eightButton ;thirdLayout- addWidget mulButton ;fourthLayout newQHBoxLayout;fourthLayout- addWidget nineButton ;fourthLayout- addWidget clearButton ;fourth

36、Layout- addWidget equButton ;fourthLayout- addWidget divButton ;mainLayout newQVBoxLayout this ;/初始化垂直布局器mainLayoutmainLayout- addWidget operateEdit ; /把顯示數(shù)據(jù)框operateEdit加到mainLayoutmainLayout- addLayout firstLayout ; /把水平布局器firstLayout添加到mainLayoutmainLayout- addLayout secondLayout ; /把水平布局器secondLa

37、yout添加到mainLayoutmainLayout- addLayout thirdLayout ; /把水平布局器thirdLayout添加到mainLayoutmainLayout- addLayout fourthLayout ; /把水平布局器fourthLayout添加到mainLayoutconnect zeroButton,SIGNAL clicked ,this,SLOT zeroButtonPress ;/把按鍵zeroButton的按下事件同zeroButtonPress 綁定到一起,以下操作類似connect oneButton,SIGNAL clicked ,thi

38、s,SLOT oneButtonPress ;connect twoButton,SIGNAL clicked ,this,SLOT twoButtonPress ;connect threeButton,SIGNAL clicked ,this,SLOT threeButtonPress ;connect fourButton,SIGNAL clicked ,this,SLOT fourButtonPress ;connect fiveButton,SIGNAL clicked ,this,SLOT fiveButtonPress ;connect sixButton,SIGNAL clic

39、ked ,this,SLOT sixButtonPress ;connect sevenButton,SIGNAL clicked ,this,SLOT sevenButtonPress ;connect eightButton,SIGNAL clicked ,this,SLOT eightButtonPress ;connect nineButton,SIGNAL clicked ,this,SLOT nineButtonPress ;connect addButton,SIGNAL clicked ,this,SLOT addButtonPress ;connect subButton,S

40、IGNAL clicked ,this,SLOT subButtonPress ;connect mulButton,SIGNAL clicked ,this,SLOT mulButtonPress ;connect divButton,SIGNAL clicked ,this,SLOT divButtonPress ;connect equButton,SIGNAL clicked ,this,SLOT equButtonPress ;connect clearButton,SIGNAL clicked ,this,SLOT clearButtonPress ;this- setWindow

41、Title tr Calculator ;/設置窗體標題為Calculator input2 0;/初始化運算操作數(shù)2為0 input1 0;/初始化運算操作數(shù)1為0 operate 0;/初始化運算符為0 然后是析構(gòu)函數(shù)的實現(xiàn):Calculator:Calculator /析構(gòu)函數(shù)主要完成對構(gòu)造函數(shù)中所聲明的QLineEdit、QPushButton、QHBoxLayout、QVBoxLayout類的對象的回收工作(可以不定義析構(gòu)函數(shù),程序運行結(jié)束時會自動調(diào)用系統(tǒng)默認的析構(gòu)函數(shù)) if operateEdit ! NULL / operateEdit NULL;deleteoperateEd

42、it; if zeroButton ! NULL zeroButton NULL;deletezeroButton; . 根據(jù)前面對按鍵事件的分析,有數(shù)字輸入鍵,運算操作符輸入鍵和清屏鍵三種,故對每種事件的槽響應函數(shù)都只說明一種,其他依此類推。數(shù)字輸入鍵響應槽函數(shù),以按鍵“1”為例:void Calculator:oneButtonPress if input2 0 /如果當前顯示框為0 input2 1;/變0為1 else/如果當前顯示框不為0 input2 operateEdit- text ; input2.append tr 1 ;/在顯示的數(shù)據(jù)后面追加1 operateEdit-

43、setText input2 ;/更新顯示框中的顯示信息 運算操作符輸入鍵響應槽函數(shù),以按鍵“+”為例:void Calculator:addButtonPress floatfirst,second; input2 operateEdit- text ;/把當前顯示的數(shù)據(jù)保存到運算操作數(shù)2中if operate 0 /如果是第一次按下運算符鍵 input1 input2;/把運算操作數(shù)2中的數(shù)據(jù)保存到運算操作數(shù)1中 input2 0;/清除運算操作數(shù)2中的數(shù)據(jù) operate +;/把運算符鍵置+ Else/如果是第二次按下運算符鍵 second input2.toFloat ;/把運算操作

44、數(shù)2中的數(shù)據(jù)轉(zhuǎn)化為浮點類型 first input1.toFloat ;/把運算操作數(shù)1中的數(shù)據(jù)轉(zhuǎn)化為浮點類型switch operate /根據(jù)當前的運算符判斷做何操作 case+:first first+second;break;case-:first first-second;break;case*:first first*second;break;case/:first first/second;break; input1 QString:number first,f,10 ;/把運算的結(jié)果轉(zhuǎn)化成為可以在顯示框顯示的類型 input2 0;/清除運算操作數(shù)2中的數(shù)據(jù) operate +

45、;/把運算符鍵置“+” operateEdit- setText input1 ;/更新顯示框中的顯示內(nèi)容 清屏操作響應函數(shù):void Calculator:clearButtonPress input2 0;/把運算操作數(shù)2清零 input1 0;/把運算操作數(shù)1清零operateEdit- setText input2 ; /更新顯示框中的顯示內(nèi)容 對main.cpp源代碼的簡要說明#include /包含應用程序類#include calculator.h/包含計算器類int main intargc, char *argv /main函數(shù)的標準寫法 QApplication app a

46、rgc, argv ; /創(chuàng)建一個QApplication對象,管理應用程序的資源 Calculator mainwindow; /產(chǎn)生一個計算器對象mainwindow.showimized ;/顯示計算器窗體 默認以最大化的形式顯示 return app.exec ;/讓程序進入消息循環(huán),等待可能的菜單、工具條、鼠標等的輸入,進行響應。 第七章 編譯運行7.1完成源程序的編輯后,可以直接點擊圖F-10中所示的運行按鈕,這時QtCreator會自動編譯源程序并生成可執(zhí)行程序。圖F-107.2計算器程序在界面如圖F-11所示。圖F-11第八章 計算器程序的移植上面所說的可執(zhí)行程序是由QtCreator調(diào)用qmake命令生成Makefile文件后調(diào)用make命令自動生成。下面將通過交叉編譯工具鏈中的qmake命令生成Makefile文件并用make命令生成ARM上的可執(zhí)行程序。8.1進入/root/Work/Calculator目錄下,可以看到計算器程序的幾個源文件,如圖F-12所示。圖F-128.2用qmake命令生成Makefile文件,然后用make編譯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論