1. 程式人生 > >用Qt寫計算器

用Qt寫計算器

先轉一篇關於singal和slot的介紹:

注意: 在類宣告的開始位置必須加上 Q_OBJECT 語句,它將告訴編譯器在編譯之前必須先應用 moc 工具進行擴充套件,從而才能夠使用singal和slot機制。

計算器的控制邏輯:

設定一個標誌位:waitingForOperand,表示是否在等待輸入運算元,作用僅是判斷在輸入數字時,是否需要清屏,不對控制邏輯造成影響。

四個儲存單元:pendingAdditiveOperator儲存等待運算的加減運算子;pendingMultiplicativeOperator儲存等待運算的乘除運算子;

sumSoFar儲存經加減運算後或者等待加減運算的數值,factorSoFar儲存經乘除運算後或者等待乘除運算的數值。

邏輯的主要部分在於乘除運算和加減的優先順序不同。下面的各個函式都是針對輸入的不同符號做不同的處理:

1. 處理加減運算子:如果pendingMultiplicativeOperator不為空,即儲存有待運算的乘除運算子,就先將factorSoFar的數值與當前顯示的數字進行乘除運算;然後pendingMultiplicativeOperator不為空,即儲存有待運算的加減運算子,則計算sumSoFar與當前的數字的加或者減。

2.  處理乘除運算子:如果pendingMultiplicativeOperator不為空,即儲存有待運算的乘除運算子,就先將factorSoFar的數值與當前顯示的數字進行乘除運算;

這兩個函式都是不處理當前輸入的符號,而是處理先前輸入的符號。如果當前輸入是乘除,則看前一個符號是否是乘除,是則處理;如果當前輸入是加減,則先往前看前一個是否是乘除,有則處理,然後再看前一個是否是加減,有則處理。

算式最多隻會儲存一個加減、一個乘除運算子,因為在輸入下一個二元運算子時,乘除運算子就會被處理,所以最多隻會儲存一次,加減運算子同理。

3. 處理一元運算子:直接對螢幕上顯示的數字進行一元運算就行了。

4. 處理等號:跟加減運算子同樣處理。

其他的諸如換號、小數點、回退都很容易處理,就不贅述了。

相關推薦

Qt計算器

先轉一篇關於singal和slot的介紹:注意: 在類宣告的開始位置必須加上 Q_OBJECT 語句,它將告訴編譯器在編譯之前必須先應用 moc 工具進行擴充套件,從而才能夠使用singal和slot機制。計算器的控制邏輯:設定一個標誌位:waitingForOperand,

javascript計算器

一位 先來 itl else 對象 alt img 技術 value 本人新手,如果有什麽不足的地方,希望可以得到指點 今天嘗試用javascript寫一個計算器 首先把計算器的按鈕做出來,用button做好了,這樣可以不用設置太多的樣式 <button value

Qt軟體系列一:QCacheViewer(瀏覽器快取檢視器)

介紹      Cache技術廣泛應用於計算機行業的軟硬體領域。該技術既是人們對新技術探討的結果,也是對當前軟硬體計算能力的一種妥協。在瀏覽器中使用cache技術,可以大幅度提高web頁面的響應速度,降低資料傳輸延遲,提高web使用者的體驗。因此,客戶端在瀏覽網頁的過程中,會在本地快取許多檔案。隨著使用時間

ubuntu開機自動執行Qt的程式

    這裡介紹一種在ubuntu系統開機自動執行使用Qt編寫的程式的方法。首先要注意要自動執行Qt編的程式,不需要先開啟Qt,而是直接執行編譯好的與工程名同名的可執行檔案即可,比如我要執行的工程為QRDecode,則使用QtCreater編譯之後,在該工程目錄下有一個叫Q

C/C++QT的五子棋原始碼

效果圖: FIR.pro #------------------------------------------------- # # Project created by QtCreator 2012-07-27T01:01:27 # #---------------

ubuntu&linaro開機自動執行Qt的程式

1st     vi /usr/share/applications/qt.desktop    前提qt程式放到/home/linaro/myqt/   [Desktop Entry] Version=1.0 Name=testQT Exec=/home/linaro

Qt軟體系列三:一個簡單的系統工具之介面美化

前言      在上一篇中,我們基本上完成了主要功能的實現,剩下的一些匯出、程序子模組資訊等功能,留到後面再來慢慢實現。這一篇來講述如何對主介面進行個性化的定製。Qt庫提供的只是最基本的元件功能,使用這些元件開發出來的軟體基本上個性可言。如果開發的產品只講究實用性,那麼UI

qttcp服務端和客戶端介面遇到的問題及解決方法

問題1 #include <QTcpSocket> #include <QtcpServer> 在包含這兩個標頭檔案時提示找不到檔案 此時需要在此工程的.pro檔案中新增 QT += network 問題2 服務端的ui介

VB計算器

我是沒什麼心思寫計算器的。。不過要參加星火盃的話這個坎還是要過一過。。。 emmmm然後發現寫個GUI真是步步艱難,先用了VS發現特麼廢流量,再用QT一直蜜汁錯誤。。然後。。然後最終還是向VB低頭orz 演算法上不存在什麼問題啦。。只是不熟悉而且很多細節需要注意。。debu

VS2013+QT的Action或按鈕明明沒有按下,卻會調

相同 感悟 需要 如果 最好 vs2013 span copy 。。 我今天調了一天的bug,已知不懂為什麽其它都可以,但是一直這裏輸出不行,換了多種思路,一直調試; 。。。 終於,在一次次重新看代碼的時候註意到,有一處地方,我認為是不會錯的代碼的地方,實際上是有錯誤的:

shell一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.

a-z 依次 腳本 als 示例 內置 數位 特殊字符 使用 用shell寫一個簡易計算器,可以實現加、減、乘、除運算,假如腳本名字為1.sh,執行示例:./1.sh 1 + 2#!/bin/bash if [ $# -ne 3 ] then echo "參

JavaScript一個簡單的計算器

res scroll ref 簡單的 精度 arguments alt inf create 本文使用js實現了一個簡單的加、減、乘、除計算器。 以下是css部分代碼: *{ padding:0; margin:0; color: #424242;

Qt Quick Lession3 (QML一個簡單的顏色選擇器)

先看一下效果圖: 實現功能:點選不同的色塊可以改變文字的顏色。 實現步驟: 一、建立一個預設的Qt Quick工程:     二、新增檔案Cell.qml 這一步主要是為了實現一個自定義的元件,這個元件就是我們看到的那個色塊,很明顯定義

python一個簡單計算器

1、利用迴圈新增按鈕部件,及給每個按鈕設定訊號/槽2、給按鈕設定固定大小:button.setFixedSize(QtCore.QSize(60,30))3、取事件的的傳送者(此例為各個按鈕)的文字: self.sender().text()#簡易計算器 import sys

QT調C#的Dll

cal com deb 編譯環境 mod 函數名 load() src system 參見: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#寫的dll是沒有dllMain入口函數的,是一

python的一個簡單的計算器

用Python完成的一個簡單的計算器,能算簡單的+,-,×,/運算,暫不支援鍵盤輸入,以後會慢慢加些附加的功能,讓它變得強大些 from Tkinter import * def frame(root,side): w=Frame(root) w.pack(side=side

Qt實現的計算器

需求分析 模組圖 類圖 核心演算法 中綴表示式轉化為字尾表示式 規則:從左到右遍歷中綴表示式(表示式運算子在兩數字之間,比如(2+1)3)的每個數字和符號,若是數字就輸出,即成為字尾表示式(表示式運算子在數字之後,不包含括號

QT的一個小遊戲——FlappyBird(憤怒的小鳥)

最近瀏覽網站的時候,忘記在哪裡看的這個FlappyBird了,這個小遊戲在前兩年小火了一段時間。今天用QT簡單的實現了一把,然後在網上找了一些相關的切圖,便進行了製作。難度不是很大,只是通過寫這篇部落格,能有點啟發以及大家共同學習。 如果你對C語言C++感興趣,那麼歡迎加入學

JAVA面向物件計算器(且避免無效輸入)

先放目錄結構   Operation類中封裝了a,b兩個運算數,以及得到運算結果的方法 package jisuanqi; public class Operation { private double a; private double b; public do

Python一個計算器,不允許使用計算器方面的內置函數,只能使用+-,使用到正則表達式。

內置 則表達式 ESS rip 6.0 minus replace 計算 oat 計算表達式:1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )