亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt實現(xiàn)制作簡單的計算器

 更新時間:2022年12月18日 10:09:31   作者:音視頻開發(fā)老舅  
計算器是我們生活中很常見的東西,它可以由多種語言多種方式來實現(xiàn)。本文主要介紹的是利用Qt實現(xiàn)的簡易計算器的制作,文中的示例代碼講解詳細,需要的可以參考一下

前言

今天使用qt制作了一個很簡單的計算器,覺得挺有意思的,所以在這里跟大家分享一下。

這里先跟大家說說使用到的函數(shù):

1、槽連接函數(shù)

connect(信號發(fā)送者,發(fā)送的信號,信號接收者,信號接收者的槽函數(shù))   //前面我有一篇文章已經(jīng)介紹過槽函數(shù)的使用了,大家有興趣可以看看,這里就不詳細說了。 

2、取出按鈕中的字符

QString line = ui->pushButton1->text() //取出按鈕pushButton1中的字符存放到line中

3、設(shè)置輸入框中顯示的內(nèi)容

ui->lineEdit->setText(line); //設(shè)置輸入框lineEdit中顯示的內(nèi)容,line為要顯示的內(nèi)容

4、清空字符數(shù)組

line.clear(); //清空字符數(shù)組line中的內(nèi)容

5、將字符轉(zhuǎn)換成整形、浮點型、數(shù)值

double sum = temp1.toDouble() + temp2.toDouble(); //將字符轉(zhuǎn)換成浮點型

6、將整形、浮點型、數(shù)值轉(zhuǎn)換成字符

ui->lineEdit->setText(QString::number(sum)); //將浮點型轉(zhuǎn)換成字符

7、從字符的最后一位開始往開頭的方向按位刪除字符

 line.chop(1); //尾剔除,即是從字符串后面開始按位刪除,每次刪除字符數(shù)組line中的一位,如果是2則是每次兩位,依次類推

完整代碼

下面是頭文件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();

protected slots:
    void item0();//0
    void item1();//1
    void item2();//2
    void item3();//3
    void item4();//4
    void item5();//5
    void item6();//6
    void item7();//7
    void item8();//8
    void item9();//9
    void sub();//減號
    void div();//除號
    void mul();//乘號
    void cancel();//取消
    void delet();//尾剔除
    void add();//加號
    void equal();//等于號
    void point();//小數(shù)點

private:
    Ui::Widget *ui;

};

#endif // WIDGET_H

源文件widget.cpp中的代碼:

#include "widget.h"
#include "ui_widget.h"
#include <QString>
#include <QDebug>
#include <stdlib.h>
#include <string.h>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //連接槽函數(shù)
    connect(ui->pushButton0,SIGNAL(clicked(bool)),this,SLOT(item0())); //0
    connect(ui->pushButton1,SIGNAL(clicked(bool)),this,SLOT(item1())); //1
    connect(ui->pushButton2,SIGNAL(clicked(bool)),this,SLOT(item2())); //2
    connect(ui->pushButton3,SIGNAL(clicked(bool)),this,SLOT(item3())); //3
    connect(ui->pushButton4,SIGNAL(clicked(bool)),this,SLOT(item4())); //4
    connect(ui->pushButton5,SIGNAL(clicked(bool)),this,SLOT(item5())); //5
    connect(ui->pushButton6,SIGNAL(clicked(bool)),this,SLOT(item6())); //6
    connect(ui->pushButton7,SIGNAL(clicked(bool)),this,SLOT(item7())); //7
    connect(ui->pushButton8,SIGNAL(clicked(bool)),this,SLOT(item8())); //8
    connect(ui->pushButton9,SIGNAL(clicked(bool)),this,SLOT(item9())); //9

    connect(ui->pushButton_c,SIGNAL(clicked(bool)),this,SLOT(cancel()));//取消
    connect(ui->pushButton_add,SIGNAL(clicked(bool)),this,SLOT(add()));//加號
    connect(ui->pushButton_equal,SIGNAL(clicked(bool)),this,SLOT(equal()));//等于號
    connect(ui->pushButton_point,SIGNAL(clicked(bool)),this,SLOT(point()));//小數(shù)點
    connect(ui->pushButton_div,SIGNAL(clicked(bool)),this,SLOT(div()));//除號
    connect(ui->pushButton_sub,SIGNAL(clicked(bool)),this,SLOT(sub()));//減號
    connect(ui->pushButton_mul,SIGNAL(clicked(bool)),this,SLOT(mul()));//乘號
    connect(ui->pushButton_delete,SIGNAL(clicked(bool)),this,SLOT(delet()));//尾剔除
}


QString line;
QString item_0; //0
QString item_1; //1
QString item_2; //2
QString item_3;//3
QString item_4;//4
QString item_5;//5
QString item_6;//6
QString item_7;//7
QString item_8;//8
QString item_9;//9
QString temp1,temp2; //臨時存放兩次輸入的要進行計算的項
double sum = 0;  //計算后的結(jié)果
int flag = 0,flag1 = 0; //flag加號標志,flag1等于號標志
int flag3 = 0;//減號標志
int flag4 = 0;//乘號標志
int flag5 = 0;//除號標志
Widget::~Widget()
{
    delete ui;
}

void Widget::item0() //0
{
    item_0 = ui->pushButton0->text(); //獲取按鍵中的字符"0"
    line += item_0;//每按一次按鍵就相加一次按鍵中的字符"0"
    ui->lineEdit->setText(line); //顯示到輸入條中
}

void Widget::item1() //1
{
    item_1 = ui->pushButton1->text();
    line += item_1;
    ui->lineEdit->setText(line);
}

void Widget::item2() //2
{
   item_2 = ui->pushButton2->text(); //獲取按鍵中的字符"2"
   line += item_2; //每按一次按鍵就相加一次按鍵中的字符"2"
   ui->lineEdit->setText(line);
}


void Widget::item3() //3
{
   item_3 = ui->pushButton3->text(); //獲取按鍵中的字符"3"
   line += item_3; //每按一次按鍵就相加一次按鍵中的字符"3"
   ui->lineEdit->setText(line);
}

void Widget::item4() //4
{
    item_4 = ui->pushButton4->text();
    line += item_4;
    ui->lineEdit->setText(line);
}

void Widget::item5() //5
{
    item_5 = ui->pushButton5->text();
    line += item_5;
    ui->lineEdit->setText(line);
}

void Widget::item6() //6
{
    item_6 = ui->pushButton6->text();
    line += item_6;
    ui->lineEdit->setText(line);
}

void Widget::item7() //7
{
    item_7 = ui->pushButton7->text();
    line += item_7;
    ui->lineEdit->setText(line);
}

void Widget::item8() //8
{
    item_8 = ui->pushButton8->text();
    line += item_8;
    ui->lineEdit->setText(line);
}

void Widget::item9() //9
{
    item_9 = ui->pushButton9->text();
    line += item_9;
    ui->lineEdit->setText(line);
}


void Widget::point() //小數(shù)點
{
    if(flag1 == 0) //沒有按等于號按鍵,說明沒有進行運算,所以顯示第一次輸入的字符串
    {
        line +=".";
        ui->lineEdit->setText(line);
    }

    if(flag1 == 1) //按了等于號按鍵,這時候要顯示后面一次輸入的字符串
    {
        line  = ui->lineEdit->text();
        line += ".";
        ui->lineEdit->setText(line);
        flag1 = 0;
    }
}


void Widget::delet() //尾剔除
{
    line = ui->lineEdit->text(); //獲取輸入條中的字符
    line.chop(1); //倒位刪除,即是從字符串后面開始按位刪除
    ui->lineEdit->setText(line);
}

void Widget::cancel() //重新置零
{
   line.clear();
   temp1.clear();
   temp2.clear();
   sum = 0;
   flag = 0;
   flag1 = 0;
   flag3 = 0;
   flag4 =0;
   flag5 = 0;
   ui->lineEdit->setText(line);//輸出0
}

void Widget::add() //相加
{
    flag = 1;
    temp1 = ui->lineEdit->text(); //獲取前面輸入的字符,并臨時保存起來
    line.clear(); //清空字符數(shù)組
    ui->lineEdit->setText(line);//顯示清空狀態(tài)
}

void Widget::sub() //相減
{
    flag3 = 1;//按了加號按鍵就改變狀態(tài)
    temp1 = ui->lineEdit->text(); //獲取前面輸入的字符,并臨時保存起來
    line.clear(); //清空字符數(shù)組
    ui->lineEdit->setText(line);//顯示清空狀態(tài)
}

void Widget::div()//除法
{
    flag4 = 1;//按了加號按鍵就改變狀態(tài)
    temp1 = ui->lineEdit->text(); //獲取前面輸入的字符,并臨時保存起來
    line.clear(); //清空字符數(shù)組
    ui->lineEdit->setText(line);//顯示清空狀態(tài)
}


void Widget::mul()//乘法
{
    flag5 = 1;//按了加號按鍵就改變狀態(tài)
    temp1 = ui->lineEdit->text(); //獲取前面輸入的字符,并臨時保存起來
    line.clear(); //清空字符數(shù)組
    ui->lineEdit->setText(line);//顯示清空狀態(tài)
}

void Widget::equal() //得出結(jié)果
{
    flag1 = 1; //按一次等于號就改變狀態(tài)
    if(flag == 1) //加法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() + temp2.toDouble(); //將字符轉(zhuǎn)換成浮點型
        ui->lineEdit->setText(QString::number(sum)); //將浮點型轉(zhuǎn)換成字符
        flag = 0; //重新讓標志位置零,等待下一次的加法進行
    }

    else if(flag3 == 1) //減法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        ui->lineEdit->setText(line);
        sum = temp1.toDouble() - temp2.toDouble(); //將字符轉(zhuǎn)換成浮點型

        if(sum == 0) //等于0
        {
            ui->lineEdit->setText("0");
        }
        ui->lineEdit->setText(QString::number(sum)); //將浮點型轉(zhuǎn)換成字符
            // qDebug()<<sum;
        flag3 = 0; //重新讓標志位置零,等待下一次的減法進行
    }

    else if(flag4 == 1) //除法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() / temp2.toDouble(); //將字符轉(zhuǎn)換成浮點型
        if(temp2 == "0") //分母等于0
        {
            ui->lineEdit->setText("0");
        }
        ui->lineEdit->setText(QString::number(sum)); //將浮點型轉(zhuǎn)換成字符
        flag4 = 0; //重新讓標志位置零,等待下一次的除法進行
    }

   else if(flag5 == 1) //乘法
    {
        temp2 = ui->lineEdit->text();
        line.clear(); //清空字符串
        sum = temp1.toDouble() * temp2.toDouble(); //將字符轉(zhuǎn)換成浮點型
        ui->lineEdit->setText(QString::number(sum)); //將浮點型轉(zhuǎn)換成字符
        flag5 = 0; //重新讓標志位置零,等待下一次的乘法進行
    }

}

效果圖

效果圖如下:

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

相關(guān)文章

  • C++中左值引用,右值引用,萬能引用的關(guān)系及區(qū)別說明

    C++中左值引用,右值引用,萬能引用的關(guān)系及區(qū)別說明

    這篇文章主要介紹了C++中左值引用,右值引用,萬能引用的關(guān)系及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C語言實現(xiàn)簡易文本編譯器

    C語言實現(xiàn)簡易文本編譯器

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易文本編譯器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語言鏈表案例學習之通訊錄的實現(xiàn)

    C語言鏈表案例學習之通訊錄的實現(xiàn)

    為了將所學到的鏈表的知識進行鞏固學習,做到學以致用,本文將利用鏈表制作一個簡單的通訊錄。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-10-10
  • C++實現(xiàn)簡單遺傳算法

    C++實現(xiàn)簡單遺傳算法

    這篇文章主要介紹了C++實現(xiàn)簡單遺傳算法,以實例形式較為詳細的分析了遺傳算法的C++實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Qt自定義控件實現(xiàn)圓盤進度條

    Qt自定義控件實現(xiàn)圓盤進度條

    這篇文章主要為大家詳細介紹了Qt自定義控件實現(xiàn)圓盤進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 數(shù)據(jù)結(jié)構(gòu)之鏈式二叉樹詳解

    數(shù)據(jù)結(jié)構(gòu)之鏈式二叉樹詳解

    所謂二叉樹遍歷 (Traversal) 是按照某種特定的規(guī)則,依次對二叉樹中的節(jié)點進行相應(yīng)的操作,并且每個節(jié)點只操作一次。本文通過代碼示例詳細介紹了C語言中的鏈式二叉樹,需要的朋友可以參考一下
    2023-04-04
  • C++插入排序算法實例

    C++插入排序算法實例

    這篇文章主要介紹了C++插入排序算法實例,本文先是講解了什么插入排序,然后給出了C++代碼實例,需要的朋友可以參考下
    2014-10-10
  • C++ Boost MPI接口詳細講解

    C++ Boost MPI接口詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 詳解DAG上的DP

    詳解DAG上的DP

    DAG:有向無環(huán)圖。DAG是學習動態(tài)規(guī)劃的基礎(chǔ),很多問題都可以直接轉(zhuǎn)化為DAG上的最長路、最短路或路徑計數(shù)問題。本文將詳細介紹DAG上的DP。
    2021-05-05
  • C++多態(tài)的實現(xiàn)及原理詳細解析

    C++多態(tài)的實現(xiàn)及原理詳細解析

    C++的多態(tài)性用一句話概括就是:在基類的函數(shù)前加上virtual關(guān)鍵字,在派生類中重寫該函數(shù),運行時將會根據(jù)對象的實際類型來調(diào)用相應(yīng)的函數(shù)。如果對象類型是派生類,就調(diào)用派生類的函數(shù);如果對象類型是基類,就調(diào)用基類的函數(shù)
    2013-09-09

最新評論