最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Qt實現(xiàn)簡單的計算器

 更新時間:2023年11月03日 08:42:32   作者:莫淺子  
這篇文章主要介紹了如何使用Qt框架實現(xiàn)一個簡單的計算器應(yīng)用,我們將使用C++編程語言和Qt的圖形用戶界面庫來開發(fā)這個應(yīng)用,并展示如何實現(xiàn)基本的算術(shù)操作,希望對大家有所幫助

在這篇技術(shù)博客中,我們將介紹如何使用Qt框架實現(xiàn)一個簡單的計算器應(yīng)用。我們將使用C++編程語言和Qt的圖形用戶界面庫來開發(fā)這個應(yīng)用,并展示如何實現(xiàn)基本的算術(shù)操作。

項目設(shè)置

首先,我們需要在Qt Creator中創(chuàng)建一個新的Qt Widgets應(yīng)用程序項目。這個項目將提供我們所需的基本框架和文件結(jié)構(gòu)。在創(chuàng)建項目時,我們可以選擇包含所需的文件和模板代碼,以便更快地開始工作。

選擇 Qt Widegets Application

然后給項目命名

然后

后面的選擇QWidget

最后一步默認就行了 

 界面設(shè)計

我們的計算器應(yīng)用將包含一個文本框用于顯示輸入和結(jié)果,以及一組按鈕用于輸入數(shù)字和執(zhí)行算術(shù)操作。我們可以使用Qt的界面設(shè)計器來設(shè)計和布局這些UI元素。界面設(shè)計器幫助我們以圖形方式布局和排列部件,并為它們添加適當?shù)牟僮骱托盘柌圻B接。

在我們的計算器界面中,我們需要添加一個單行文本框(QLineEdit)用于顯示輸入和結(jié)果。此外,我們將添加數(shù)字按鈕(QPushButton)和操作按鈕(如加法、減法、乘法、除法和等于號按鈕)。通過在界面設(shè)計器中拖放這些元素,我們可以輕松地設(shè)置它們的位置和大小。

將界面設(shè)計成我這樣,上面白色展示計算的地方可以用  lineEdit , 剩下的用PushButton 就行了。

然后快捷的可以鼠標右擊,打開轉(zhuǎn)接到槽

選擇第一個clicked()

這樣在widegt.h ,widegt.cpp都有了寫好的槽,我們只需要實先就可以了 

事件處理

在widegt.h中聲明第一個實現(xiàn)算式運算的數(shù)a和第二個實現(xiàn)算術(shù)運算的數(shù)b

QString a;
QStringList b;
QString c;

widget.h完整代碼

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QString>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    QString a;
    QStringList b;
    QString c;

private slots:
    void on_pushButton_1_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_0_clicked();

    void on_pushButton_add_clicked();

    void on_pushButton_equit_clicked();

    void on_pushButton_Sub_clicked();

    void on_pushButton_Mult_clicked();

    void on_pushButton_divi_clicked();

    void on_pushButton_clear_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp中這樣寫

一旦我們的界面布局完成,我們需要處理按鈕的點擊事件和執(zhí)行相應(yīng)的操作。為此,我們將使用Qt框架提供的信號和槽機制來連接按鈕的點擊事件和我們實現(xiàn)的槽函數(shù)。

對于數(shù)字按鈕,我們將在其點擊事件觸發(fā)時將相應(yīng)的數(shù)字追加到輸入字符串中,并更新文本框的顯示。例如,當點擊數(shù)字按鈕"1"時,我們將在輸入字符串末尾追加"1"并更新文本框。

對于操作按鈕(如加法、減法、乘法、除法和等于號按鈕),我們將執(zhí)行相應(yīng)的數(shù)學運算并更新文本框的顯示。例如,當點擊加法按鈕時,我們將將當前輸入字符串保存為第一個操作數(shù),清空輸入字符串,并在操作字符串中指定加法操作。

在等于號按鈕的點擊事件中,我們將解析操作字符串,并根據(jù)指定的操作類型執(zhí)行相應(yīng)的數(shù)學運算。我們完成計算后,將結(jié)果更新到輸入字符串中,并清空操作字符串,以便進行下一次計算。

void Widget::on_pushButton_1_clicked()
{
    a += "1"; // 將 '1' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_2_clicked()
{
    a += "2"; // 將 '2' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_3_clicked()
{
    a += "3"; // 將 '3' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_4_clicked()
{
    a += "4"; // 將 '4' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_5_clicked()
{
    a += "5"; // 將 '5' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_6_clicked()
{
    a += "6"; // 將 '6' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_7_clicked()
{
    a += "7"; // 將 '7' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_8_clicked()
{
    a += "8"; // 將 '8' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_9_clicked()
{
    a += "9"; // 將 '9' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

void Widget::on_pushButton_0_clicked()
{
    a += "0"; // 將 '0' 添加到字符串 'a'
    ui->lineEdit->setText(a); // 將字符串 'a' 的內(nèi)容設(shè)置為文本框的文本
}

代碼實現(xiàn)

在Qt Creator中,我們可以打開所生成的模板代碼文件并開始實現(xiàn)我們的計算器邏輯。在這里,我們將使用C++編程語言編寫我們的槽函數(shù)和其他輔助函數(shù)。

在我們的Widget類中,我們將定義一個私有變量a和b作為輸入和操作字符串。我們還將在Widget的構(gòu)造函數(shù)中連接按鈕的點擊事件和槽函數(shù),并在析構(gòu)函數(shù)中清理資源。

對于數(shù)字按鈕的槽函數(shù),我們將在當前輸入字符串末尾追加相應(yīng)的數(shù)字,并更新文本框的顯示。

對于操作按鈕的槽函數(shù),我們將執(zhí)行以下步驟:

  • 將當前輸入字符串保存為第一個操作數(shù)。
  • 清空輸入字符串。
  • 在操作字符串中指定相應(yīng)的操作。

對于等于號按鈕的槽函數(shù),我們將執(zhí)行以下步驟:

  • 將當前輸入字符串保存為第二個操作數(shù)。
  • 解析操作字符串,執(zhí)行相應(yīng)的數(shù)學運算。
  • 將計算結(jié)果更新到輸入字符串中,并清空操作字符串。

在清除按鈕的槽函數(shù)中,我們將清空輸入和操作字符串,并將文本框的顯示重置為"0"。

代碼實現(xiàn)

// 加法按鈕被點擊
void Widget::on_pushButton_add_clicked()
{
    b.insert(0,a); // 將字符串a(chǎn)插入到字符串b的首位
    a.clear(); // 清空字符串a(chǎn)
    b.insert(1,"+"); // 在字符串b的第1個位置插入"+"符號
    ui->lineEdit->setText(a); // 將字符串a(chǎn)的內(nèi)容設(shè)置為文本框的文本
}

// 等于按鈕被點擊
void Widget::on_pushButton_equit_clicked()
{
    if (!a.isEmpty() && !b.isEmpty()) {
        b.insert(2, a); // 在字符串b的第2個位置插入字符串a(chǎn)
        int v3;
        if (b.at(1) == "+") { // 判斷字符串b的第1個元素是否為"+"
            v3 = QString(b.at(0)).toInt() + QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行加法運算
            ui->lineEdit->setText(QString::number(v3)); // 將結(jié)果轉(zhuǎn)換為字符串,并將其設(shè)置為文本框的文本
        } else if (b.at(1) == "-") { // 判斷字符串b的第1個元素是否為"-"
            v3 = QString(b.at(0)).toInt() - QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行減法運算
            ui->lineEdit->setText(QString::number(v3)); // 將結(jié)果轉(zhuǎn)換為字符串,并將其設(shè)置為文本框的文本
        } else if (b.at(1) == "*") { // 判斷字符串b的第1個元素是否為"*"
            v3 = QString(b.at(0)).toInt() * QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行乘法運算
            ui->lineEdit->setText(QString::number(v3)); // 將結(jié)果轉(zhuǎn)換為字符串,并將其設(shè)置為文本框的文本
        } else if (b.at(1) == "/") { // 判斷字符串b的第1個元素是否為"/"
            v3 = QString(b.at(0)).toInt() / QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行除法運算
            ui->lineEdit->setText(QString::number(v3)); // 將結(jié)果轉(zhuǎn)換為字符串,并將其設(shè)置為文本框的文本
        }

        // 清空a和b,同時將結(jié)果保存到a,以便后續(xù)計算
        a = QString::number(v3);
        b.clear();
    }
    else {
        b.insert(0, a); // 將字符串a(chǎn)插入到字符串b的首位
        a.clear(); // 清空字符串a(chǎn)
    }
}

// 減法按鈕被點擊
void Widget::on_pushButton_Sub_clicked()
{
    b.insert(0,a); // 將字符串a(chǎn)插入到字符串b的首位
    a.clear(); // 清空字符串a(chǎn)
    b.insert(1,"-"); // 在字符串b的第1個位置插入"-"符號
    ui->lineEdit->setText(a); // 將字符串a(chǎn)的內(nèi)容設(shè)置為文本框的文本
}

// 乘法按鈕被點擊
void Widget::on_pushButton_Mult_clicked()
{
    b.insert(0,a); // 將字符串a(chǎn)插入到字符串b的首位
    a.clear(); // 清空字符串a(chǎn)
    b.insert(1,"*"); // 在字符串b的第1個位置插入"*"符號
    ui->lineEdit->setText(a); // 將字符串a(chǎn)的內(nèi)容設(shè)置為文本框的文本
}

// 除法按鈕被點擊
void Widget::on_pushButton_divi_clicked()
{
    b.insert(0,a); // 將字符串a(chǎn)插入到字符串b的首位
    a.clear(); // 清空字符串a(chǎn)
    b.insert(1,"/"); // 在字符串b的第1個位置插入"/"符號
    ui->lineEdit->setText(a); // 將字符串a(chǎn)的內(nèi)容設(shè)置為文本框的文本
}

// 清除鍵按鈕被點擊
void Widget::on_pushButton_clear_clicked()
{
    a.clear(); // 清空字符串a(chǎn)
    b.clear(); // 清空字符串b
    ui->lineEdit->setText("0"); // 將文本框的文本設(shè)置為"0"
}

結(jié)論

通過使用Qt框架和C++編程語言,我們成功地實現(xiàn)了一個簡單的計算器應(yīng)用。我們通過界面設(shè)計器設(shè)計了應(yīng)用的用戶界面,并使用槽函數(shù)和信號槽機制處理用戶的輸入和操作。這個計算器應(yīng)用可以執(zhí)行基本的數(shù)學運算,并在文本框中顯示結(jié)果。

借助Qt的強大功能和易用性,我們可以進一步擴展和改進這個計算器應(yīng)用,添加更多的功能和操作。我們可以使用Qt提供的其他庫和工具來增加應(yīng)用的性能和可視化效果。最終,這個計算器還有很多不完善的地方如果想修改完完善可以自己試試,這是一個非常簡單的Qt項目,只適合初學者鍛煉。

到此這篇關(guān)于基于Qt實現(xiàn)簡單的計算器的文章就介紹到這了,更多相關(guān)Qt計算器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++實現(xiàn)俄羅斯方塊游戲代碼

    c++實現(xiàn)俄羅斯方塊游戲代碼

    大家好,本篇文章主要講的是c++實現(xiàn)俄羅斯方塊游戲代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C++類基本語法實例分析

    C++類基本語法實例分析

    這篇文章主要介紹了C++類基本語法實例分析,非常適合初學者學習借鑒,需要的朋友可以參考下
    2014-08-08
  • C++超詳細講解函數(shù)對象

    C++超詳細講解函數(shù)對象

    在c++中,我們把所有能當作函數(shù)使用的對象統(tǒng)稱為函數(shù)對象。它是實現(xiàn)operator()的任何類型,此運算符被稱為調(diào)用運算符,當調(diào)用此操 作符時,其表現(xiàn)形式如同普通函數(shù)調(diào)用一般,因此取名叫函數(shù)對象
    2022-06-06
  • C語言版學生成績管理系統(tǒng)

    C語言版學生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言版學生成績管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)智能柜管理系統(tǒng)

    C++實現(xiàn)智能柜管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)智能柜管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Qt+QListWidget實現(xiàn)氣泡聊天界面(附源碼)

    Qt+QListWidget實現(xiàn)氣泡聊天界面(附源碼)

    由于最近的項目需要,做了些相關(guān)IM的工作。所以聊天框也是必不可少的一部分。本文以QListWidget+QPainter繪制的Item做了一個Demo。該Demo只是做一個示例,感興趣的可以了解一下
    2022-12-12
  • 一文帶你搞懂C語言動態(tài)內(nèi)存管理

    一文帶你搞懂C語言動態(tài)內(nèi)存管理

    動態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存。本文將通過幾個示例帶大家深入了解一下C語言的動態(tài)內(nèi)存管理,需要的可以參考一下
    2022-11-11
  • C++ const 與 static變量、函數(shù)、類成員的全面解析(最新推薦)

    C++ const 與 static變量、函數(shù)、類成員的全面解析(最新推薦)

    本文系統(tǒng)解析了C++中const與static關(guān)鍵字的核心用法,文章還展示了二者在單例模式等設(shè)計模式中的綜合應(yīng)用,并比較了C++11引入的constexpr等現(xiàn)代特性,正確使用這些關(guān)鍵字能提升代碼安全性、可維護性和性能優(yōu)化,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • C++中的四個默認成員函數(shù)與運算符重載詳解

    C++中的四個默認成員函數(shù)與運算符重載詳解

    這篇文章主要給大家介紹了關(guān)于C++中四個默認成員函數(shù)與運算符重載的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來跟著小編一起學習學習吧。
    2017-08-08
  • c++ fstream 文件追加模式示例詳解

    c++ fstream 文件追加模式示例詳解

    本文給大家介紹c++ fstream 文件追加模式示例詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10

最新評論

姚安县| 莎车县| 宜丰县| 江口县| 芒康县| 大关县| 辽宁省| 南川市| 双柏县| 铅山县| 余姚市| 盐源县| 海伦市| 博乐市| 蒙阴县| 太谷县| 滕州市| 东阿县| 伊金霍洛旗| 延川县| 乌鲁木齐市| 东阿县| 武平县| 清远市| 常山县| 舒兰市| 清徐县| 泰来县| 沾益县| 英德市| 太湖县| 镇雄县| 双江| 梁河县| 通江县| 钟祥市| 宣城市| 晋中市| 惠东县| 青海省| 京山县|