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

Qt編寫的計算器

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    Init();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::Init()
{
    num = 0;
    total = 0;
    flag = 0;
}

void Widget::on_Btn0_clicked()
{
    a += "0";
    ui->Line1->setText(a);
}

void Widget::on_Btn1_clicked()
{
    a += "1";
    ui->Line1->setText(a);
}

void Widget::on_Btn2_clicked()
{
    a += "2";
    ui->Line1->setText(a);
}

void Widget::on_Btn3_clicked()
{
    a += "3";
    ui->Line1->setText(a);
}

void Widget::on_Btn4_clicked()
{
    a += "4";
    ui->Line1->setText(a);
}

void Widget::on_Btn5_clicked()
{
    a += "5";
    ui->Line1->setText(a);
}

void Widget::on_Btn6_clicked()
{
    a += "6";
    ui->Line1->setText(a);
}

void Widget::on_Btn7_clicked()
{
    a += "7";
    ui->Line1->setText(a);
}

void Widget::on_Btn8_clicked()
{
    a += "8";
    ui->Line1->setText(a);
}

void Widget::on_Btn9_clicked()
{
    a += "9";
    ui->Line1->setText(a);
}


void Widget::on_Btn11_clicked()
{
    b.insert(num,a);
    a.clear();
    b.insert(++num,"+");
    ++num;
    flag = 0;
}


void Widget::on_Btn_equal_clicked()
{
    b.insert(num,a);
    double t = 0;
    int j = 0;
    for(j = 0;j < b.count()-1;j++)
    {
        if(0 == j)
        {
            total = QString(b[j]).toDouble();
        }
        if("+" == b[j])
        {
            t = QString(b[j+1]).toDouble();
            total += t;
        }
        if("-" == b[j])
        {
            t = QString(b[j+1]).toDouble();
            total -= t;
        }
        if("*" == b[j])
        {
            t = QString(b[j+1]).toDouble();
            total *= t;
        }
        if("/" == b[j])
        {
            t = QString(b[j+1]).toDouble();
            total /= t;
        }
    }
    ui->Line1->setText(QString::number(total));
   // total = 0;
    a = QString::number(total);
    b.clear();
    num = 0;
    flag = 0;
}

void Widget::on_Btn_clear_clicked()
{
    ui->Line1->setText(" ");
    a.clear();
    b.clear();
    flag = 0;
}

void Widget::on_Btn22_clicked()
{
    b.insert(num,a);
    a.clear();
    b.insert(++num,"-");
    ++num;
    flag = 0;
}

void Widget::on_Btn33_clicked()
{
    b.insert(num,a);
    a.clear();
    b.insert(++num,"*");
    ++num;
    flag = 0;
}

void Widget::on_Btn44_clicked()
{
    b.insert(num,a);
    a.clear();
    b.insert(++num,"/");
    ++num;
    flag = 0;
}

void Widget::on_Btn_point_clicked()
{
    if(0 == flag)
    {
        a += ".";
        ui->Line1->setText(a);
    }
}

相關推薦

Qt編寫計算器(界面)

eight exe btn tex clas edi 不能 fixed png 看了幾個視頻,寫了個計算器的界面 #include <QApplication> #include <QWidget> #include <QLineEdit&g

QT 編寫 簡單的計算器(新手上路篇)

 1.先進行佈局 2.對各各部件進行改名,方便下一步的程式設計 3.編寫加減乘除 先在標頭檔案裡宣告 個槽 然後F4跳轉或手動點選 這是原始碼 但是  小數點還沒弄好  求大神幫忙    還有長度只有9位有效數字   多了就會變成零   也沒解決   求大神

Qt編寫計算器

#include "widget.h" #include "ui_widget.h" #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui:

【原創】QT簡單計算器

代碼 creator AD new info 問題 連接 body short 代碼 //main.cpp #include "calculator_111.h" #include <QtWidgets/QApplication> int main(int

QT計算器代碼重構

QT 代碼重構 首先我們來講講為什麽要進行代碼重構?在一些大的項目中,代碼重構是一個必不可少的步驟。因為項目大了,代碼也就多了,後期的維護將會很難,所以我們要適當的進行代碼重構,讓代碼的可復用性提高,使軟件的設計和架構更加合理。 代碼實現和代碼重構有什麽不同呢?代碼實現的重點是功能的實現,而代碼重構則

QT計算器對四則運算表達式的解析

QT 計算器 解析算法 前面我們已經關於計算器介紹的已經夠多了,那麽它現在還是沒有具備計算的功能。 今天我們來繼續講解計算器的解析算法,那麽對於一個四則運算表達式, 它是如何讀懂的呢?比如:“+9.11 + ( -3 - 1 ) * -5 ”; 人類習慣的數學表達式叫做中綴表達式,還有一種將運

QT計算器核心解析算法

QT 解析算法 上節我們說到計算機默認的是後綴表達式,那麽中綴表達式轉後綴表達式的過程就類似於編譯過程。 必須得註意這麽幾個問題:四則運算表達式中的括號必須匹配;根據運算符優先級進行轉換;轉換後的表達式中沒有括號;轉換後可以順序計算出最終結果。下來我們就講下具體的轉換過程:1、當前元素 e 為

QT計算器解析算法下

QT 計算表達 上篇博客我們已經將中綴表達式正確的轉換為後綴表達式了。 那麽後綴表達式是如何進行計算的呢?這時就需要比那裏後綴表達式中的數字和運算符了。如果當前元素為運算符:1. 從棧中彈出右操作數;2. 從棧中彈出左操作數;3. 根據符號進行運算;4. 將運算結果壓入棧中。當遍歷結束時,再將

Qt簡易計算器

信號 顯示 清空 字符轉換 取出 聲明 字符數組 轉換成 技術 一:創建Qt工程,工程名calculator,如下圖: 只有三個主要的文件: 1:calculator.h: 主要幹兩件事,聲明需要的部件,聲明信號和槽函數 2:calculator.cpp: 主要幹三件事

Qt編寫的複雜象棋程式 chessbroad.h main.cpp

//main.cpp #include <QtGui/QApplication> #include "chessbroad.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Ches

編寫計算器程序學習JS責任鏈模式

dex bootstrap 操作符 else .com placement text edi math 設計模式中的責任鏈模式能夠很好的處理程序過程的邏輯判斷,提高程序可讀性。 責任鏈模式的核心在於責任鏈上的元素判斷能夠處理該數據,不能處理的話直接交給它的後繼者。 計算器的

編寫計算器程式學習JS責任鏈模式

設計模式中的責任鏈模式能夠很好的處理程式過程的邏輯判斷,提高程式可讀性。 責任鏈模式的核心在於責任鏈上的元素判斷能夠處理該資料,不能處理的話直接交給它的後繼者。 計算器的基本樣式: 通過div+css定義計算器的樣式,並在每個按鈕上繫結事件響應按鈕輸入。 輸入的元素為數字、小數點、加減乘除運算子時

Qt編寫控制元件時遇到underMouse判斷錯誤的情況(誤判State_MouseOver)

在寫qt下的ribbon控制元件時,重繪了一個toolbutton,但是卻遇到一個問題就是在有彈出選單模式下,點選選單後按鈕還處於hover狀態,什麼意思,就是如圖所示: 原始碼見:https://github.com/czyt1988/SARibbon/blob/master

Linux下使用QT編寫和呼叫動態連結庫(.so檔案)

Linux下Qt建立和呼叫共享庫檔案.so 費了點功夫,總算get了編寫共享庫(Shared Library,Windows下稱為“動態連結庫”,即Dynamic Link Library)和呼叫的這個新技能! 動態連結庫的好處是不言而喻的,一個稍微複雜一點的程式,頂層設計的時候良好

QT實現計算器

功能分析:                 1.實現計算器的+ - * / 基本運算及小數點運算                 2.實現清空和關機                 3.實現多個按鈕公用一個槽函式 #ifndef DIALOG_H #define DI

Qt編寫的大資料的運算,包括基礎的四則運算,階乘

編寫背景:在平常的程式設計中我們會遇到很多的大資料,這些資料的值超出了整型int的最大範圍;甚至超過了long long的資料範圍;遇到這種情況,我們的資料處理就會變的十分的麻煩。因為我們不可以使用整型變數來表示這些值當然也就不可使用四則運算來,就算這些值的加減

Qt編寫百度離線版人臉識別+比對+活體檢測

在AI技術發展迅猛的今天,很多裝置都希望加上人臉識別功能,好像不加上點人臉識別功能感覺不夠高大上,都往人臉識別這邊靠,手機刷臉解鎖,刷臉支付,刷臉開門,刷臉金融,刷臉安防,是不是以後還可以刷臉匹配男女交友? 很多人認為人臉識別直接用opencv做,其實那只是極其基礎的識別個人

Qt編寫自定義控制元件屬性設計器

以前做.NET開發中,.NET直接就集成了屬性設計器,VS不愧是宇宙第一IDE,你能夠想到的都給你封裝好了,用起來不要太爽!因為專案需要自從全面轉Qt開發已經6年有餘,在工業控制領域,有一些應用場景需要自定義繪製一些控制元件滿足特定的需求,比如儀器儀表、組態等,而且需要直接使用者通過屬性設計的形式生成匯出控制

Qt編寫的刪除C++程式碼註釋小工具

刪除C++程式碼註釋小工具遇到的問題直接上程式碼 遇到的問題 檢視前輩的Qt程式碼,發現好多沒用的程式碼註釋掉了,但是沒刪,而且這種程式碼非常多,所以想將這些註釋刪除掉。整體設計思路如下: 1、註釋就是兩種情況: ‘//’ 和’/* /’,其中/之中也可能會包含

QT編寫的程式從Windows作業系統中移植到樹莓派中編譯並執行

     開發環境    Win10 + QT5.6  和 樹莓派 1.在Win10中用QT新建一個 Qt  Widgets Application 專案    2 .找到工程目錄 3 .將整個