<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
今天使用qt製作了一個很簡單的計算器,覺得挺有意思的,所以在這裡跟大家分享一下。
這裡先跟大家說說使用到的函數:
1、槽連線函數
connect(訊號傳送者,傳送的訊號,訊號接收者,訊號接收者的槽函數) //前面我有一篇文章已經介紹過槽函數的使用了,大家有興趣可以看看,這裡就不詳細說了。
2、取出按鈕中的字元
QString line = ui->pushButton1->text() //取出按鈕pushButton1中的字元存放到line中
3、設定輸入框中顯示的內容
ui->lineEdit->setText(line); //設定輸入框lineEdit中顯示的內容,line為要顯示的內容
4、清空字元陣列
line.clear(); //清空字元陣列line中的內容
5、將字元轉換成整形、浮點型、數值
double sum = temp1.toDouble() + temp2.toDouble(); //將字元轉換成浮點型
6、將整形、浮點型、數值轉換成字元
ui->lineEdit->setText(QString::number(sum)); //將浮點型轉換成字元
7、從字元的最後一位開始往開頭的方向按位元刪除字元
line.chop(1); //尾剔除,即是從字串後面開始按位元刪除,每次刪除字元陣列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();//小數點 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); //連線槽函數 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()));//小數點 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; //計算後的結果 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() //小數點 { 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(); //清空字元陣列 ui->lineEdit->setText(line);//顯示清空狀態 } void Widget::sub() //相減 { flag3 = 1;//按了加號按鍵就改變狀態 temp1 = ui->lineEdit->text(); //獲取前面輸入的字元,並臨時儲存起來 line.clear(); //清空字元陣列 ui->lineEdit->setText(line);//顯示清空狀態 } void Widget::div()//除法 { flag4 = 1;//按了加號按鍵就改變狀態 temp1 = ui->lineEdit->text(); //獲取前面輸入的字元,並臨時儲存起來 line.clear(); //清空字元陣列 ui->lineEdit->setText(line);//顯示清空狀態 } void Widget::mul()//乘法 { flag5 = 1;//按了加號按鍵就改變狀態 temp1 = ui->lineEdit->text(); //獲取前面輸入的字元,並臨時儲存起來 line.clear(); //清空字元陣列 ui->lineEdit->setText(line);//顯示清空狀態 } void Widget::equal() //得出結果 { flag1 = 1; //按一次等於號就改變狀態 if(flag == 1) //加法 { temp2 = ui->lineEdit->text(); line.clear(); //清空字串 sum = temp1.toDouble() + temp2.toDouble(); //將字元轉換成浮點型 ui->lineEdit->setText(QString::number(sum)); //將浮點型轉換成字元 flag = 0; //重新讓標誌位置零,等待下一次的加法進行 } else if(flag3 == 1) //減法 { temp2 = ui->lineEdit->text(); line.clear(); //清空字串 ui->lineEdit->setText(line); sum = temp1.toDouble() - temp2.toDouble(); //將字元轉換成浮點型 if(sum == 0) //等於0 { ui->lineEdit->setText("0"); } ui->lineEdit->setText(QString::number(sum)); //將浮點型轉換成字元 // qDebug()<<sum; flag3 = 0; //重新讓標誌位置零,等待下一次的減法進行 } else if(flag4 == 1) //除法 { temp2 = ui->lineEdit->text(); line.clear(); //清空字串 sum = temp1.toDouble() / temp2.toDouble(); //將字元轉換成浮點型 if(temp2 == "0") //分母等於0 { ui->lineEdit->setText("0"); } ui->lineEdit->setText(QString::number(sum)); //將浮點型轉換成字元 flag4 = 0; //重新讓標誌位置零,等待下一次的除法進行 } else if(flag5 == 1) //乘法 { temp2 = ui->lineEdit->text(); line.clear(); //清空字串 sum = temp1.toDouble() * temp2.toDouble(); //將字元轉換成浮點型 ui->lineEdit->setText(QString::number(sum)); //將浮點型轉換成字元 flag5 = 0; //重新讓標誌位置零,等待下一次的乘法進行 } }
效果圖如下:
到此這篇關於Qt實現製作簡單的計算器的文章就介紹到這了,更多相關Qt計算器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45