当前位置:   article > 正文

QT实现计算器_用qt写计算器如何限制除数不能等于0、

用qt写计算器如何限制除数不能等于0、

功能分析:

                1.实现计算器的+ - * / 基本运算及小数点运算

                2.实现清空和关机

                3.实现多个按钮公用一个槽函数

  1. #ifndef DIALOG_H
  2. #define DIALOG_H
  3. #include <QDialog>
  4. namespace Ui {
  5. class Dialog;
  6. }
  7. class Dialog : public QDialog
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit Dialog(QWidget *parent = 0);
  12. ~Dialog();
  13. private slots:
  14. void on_pushButton_add_clicked();
  15. void on_pushButton_equal_clicked();
  16. void on_pushButton_clear_clicked();
  17. void on_pushButton_close_clicked();
  18. void on_pushButton_sub_clicked();
  19. void on_pushButton_multi_clicked();
  20. void on_pushButton_div_clicked();
  21. void PushButton_clicked();
  22. void on_pushButton_13_clicked();
  23. private:
  24. Ui::Dialog *ui;
  25. QString opt;
  26. QString lValue;
  27. int flags4;
  28. };
  29. #endif // DIALOG_H
  1. #include "dialog.h"
  2. #include "ui_dialog.h"
  3. #include <QDebug>
  4. #include <QMessageBox>
  5. #pragma execution_character_set("utf-8")
  6. Dialog::Dialog(QWidget *parent) :
  7. QDialog(parent),
  8. ui(new Ui::Dialog)
  9. {
  10. ui->setupUi(this);
  11. setWindowFlags(Qt::WindowCloseButtonHint);
  12. QObject::connect(ui->pushButton_1,SIGNAL(clicked()),\
  13. this,SLOT(PushButton_clicked()));
  14. QObject::connect(ui->pushButton_2,SIGNAL(clicked()),\
  15. this,SLOT(PushButton_clicked()));
  16. QObject::connect(ui->pushButton_3,SIGNAL(clicked()),\
  17. this,SLOT(PushButton_clicked()));
  18. QObject::connect(ui->pushButton_4,SIGNAL(clicked()),\
  19. this,SLOT(PushButton_clicked()));
  20. QObject::connect(ui->pushButton_5,SIGNAL(clicked()),\
  21. this,SLOT(PushButton_clicked()));
  22. QObject::connect(ui->pushButton_6,SIGNAL(clicked()),\
  23. this,SLOT(PushButton_clicked()));
  24. QObject::connect(ui->pushButton_7,SIGNAL(clicked()),\
  25. this,SLOT(PushButton_clicked()));
  26. QObject::connect(ui->pushButton_8,SIGNAL(clicked()),\
  27. this,SLOT(PushButton_clicked()));
  28. QObject::connect(ui->pushButton_9,SIGNAL(clicked()),\
  29. this,SLOT(PushButton_clicked()));
  30. QObject::connect(ui->pushButton_zero,SIGNAL(clicked()),\
  31. this,SLOT(PushButton_clicked()));
  32. flags4=0;
  33. flags1=0;
  34. opt="";
  35. }
  36. Dialog::~Dialog()
  37. {
  38. delete ui;
  39. }
  40. void Dialog::PushButton_clicked()
  41. {
  42. QString get=((QPushButton *)this->sender())->text();
  43. //QString get = this->sender()->objectName();
  44. //qDebug()<<get; //打印源头对象名称
  45. //qDebug()<<get;
  46. if(flags4)
  47. {
  48. ui->calc_edit->clear();
  49. flags4=0;
  50. }
  51. QString txt=ui->calc_edit->text();
  52. ui->calc_edit->setText(txt+get);
  53. }
  54. void Dialog::on_pushButton_add_clicked()
  55. {
  56. if(opt.length()!=0)
  57. {
  58. on_pushButton_equal_clicked();
  59. }
  60. opt="+";
  61. lValue=ui->calc_edit->text();
  62. flags4=1;
  63. }
  64. void Dialog::on_pushButton_equal_clicked()
  65. {
  66. QString rvalue=ui->calc_edit->text();
  67. //qDebug()<<lValue;
  68. if(opt=="+")
  69. {
  70. float result=lValue.toFloat()+rvalue.toFloat();
  71. lValue=QString::number((result));
  72. ui->calc_edit->setText(QString::number(result));
  73. opt="";
  74. }
  75. else if(opt=="-")
  76. {
  77. float result=lValue.toFloat()-rvalue.toFloat();
  78. lValue=QString::number((result));
  79. ui->calc_edit->setText(QString::number(result));
  80. opt="";
  81. }else if(opt=="*")
  82. {
  83. float result=lValue.toFloat()*rvalue.toFloat();
  84. lValue=QString::number((result));
  85. ui->calc_edit->setText(QString::number(result));
  86. opt="";
  87. }else if(opt=="/")
  88. {
  89. if(rvalue.toInt()==0)
  90. {
  91. //qDebug()<<"aaaaaaaa";
  92. QMessageBox::warning(this,tr("警告"),tr("除数不能为0"));
  93. return ;
  94. }
  95. float result=lValue.toFloat()/rvalue.toFloat();
  96. lValue=QString::number((result));
  97. ui->calc_edit->setText(QString::number(result));
  98. opt="";
  99. }
  100. }
  101. void Dialog::on_pushButton_clear_clicked()
  102. {
  103. ui->calc_edit->clear();
  104. lValue="";
  105. opt="";
  106. flags1=0;
  107. }
  108. void Dialog::on_pushButton_close_clicked()
  109. {
  110. this->close();
  111. }
  112. void Dialog::on_pushButton_sub_clicked()
  113. {
  114. if(opt.length()!=0)
  115. {
  116. on_pushButton_equal_clicked();
  117. }
  118. opt="-";
  119. lValue=ui->calc_edit->text();
  120. flags4=1;
  121. }
  122. void Dialog::on_pushButton_multi_clicked()
  123. {
  124. if(opt.length()!=0)
  125. {
  126. on_pushButton_equal_clicked();
  127. }
  128. opt="*";
  129. lValue=ui->calc_edit->text();
  130. flags4=1;
  131. }
  132. void Dialog::on_pushButton_div_clicked()
  133. {
  134. if(opt.length()!=0)
  135. {
  136. on_pushButton_equal_clicked();
  137. }
  138. opt="/";
  139. lValue=ui->calc_edit->text();
  140. qDebug()<<lValue;
  141. flags4=1;
  142. }
  143. void Dialog::on_pushButton_13_clicked()
  144. {
  145. QString txt=ui->calc_edit->text();
  146. if(txt==NULL)
  147. {
  148. ui->calc_edit->setText("0."+txt);
  149. }else
  150. {
  151. if(txt.indexOf(".")==-1)
  152. {
  153. ui->calc_edit->setText(txt+".");
  154. }
  155. else
  156. {
  157. ui->calc_edit->setText(txt);
  158. }
  159. }
  160. }
  1. #include "dialog.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. Dialog w;
  7. w.setMinimumSize(241,311);
  8. w.setMaximumSize(241,311);
  9. w.show();
  10. return a.exec();
  11. }

截图:

       

 总结:

         看似简单的程序,坑还蛮多的,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/902352
推荐阅读
相关标签
  

闽ICP备14008679号