赞
踩
功能分析:
1.实现计算器的+ - * / 基本运算及小数点运算
2.实现清空和关机
3.实现多个按钮公用一个槽函数
- #ifndef DIALOG_H
- #define DIALOG_H
-
- #include <QDialog>
- namespace Ui {
- class Dialog;
- }
- class Dialog : public QDialog
- {
- Q_OBJECT
- public:
- explicit Dialog(QWidget *parent = 0);
- ~Dialog();
- private slots:
- void on_pushButton_add_clicked();
- void on_pushButton_equal_clicked();
- void on_pushButton_clear_clicked();
- void on_pushButton_close_clicked();
- void on_pushButton_sub_clicked();
- void on_pushButton_multi_clicked();
- void on_pushButton_div_clicked();
- void PushButton_clicked();
- void on_pushButton_13_clicked();
-
- private:
- Ui::Dialog *ui;
- QString opt;
- QString lValue;
- int flags4;
- };
-
- #endif // DIALOG_H

- #include "dialog.h"
- #include "ui_dialog.h"
- #include <QDebug>
- #include <QMessageBox>
- #pragma execution_character_set("utf-8")
- Dialog::Dialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::Dialog)
- {
- ui->setupUi(this);
- setWindowFlags(Qt::WindowCloseButtonHint);
- QObject::connect(ui->pushButton_1,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_2,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_3,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_4,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_5,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_6,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_7,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_8,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_9,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- QObject::connect(ui->pushButton_zero,SIGNAL(clicked()),\
- this,SLOT(PushButton_clicked()));
- flags4=0;
- flags1=0;
- opt="";
- }
-
- Dialog::~Dialog()
- {
- delete ui;
- }
- void Dialog::PushButton_clicked()
- {
- QString get=((QPushButton *)this->sender())->text();
- //QString get = this->sender()->objectName();
- //qDebug()<<get; //打印源头对象名称
- //qDebug()<<get;
- if(flags4)
- {
- ui->calc_edit->clear();
- flags4=0;
- }
- QString txt=ui->calc_edit->text();
- ui->calc_edit->setText(txt+get);
- }
- void Dialog::on_pushButton_add_clicked()
- {
- if(opt.length()!=0)
- {
- on_pushButton_equal_clicked();
- }
- opt="+";
- lValue=ui->calc_edit->text();
- flags4=1;
- }
-
- void Dialog::on_pushButton_equal_clicked()
- {
- QString rvalue=ui->calc_edit->text();
- //qDebug()<<lValue;
- if(opt=="+")
- {
- float result=lValue.toFloat()+rvalue.toFloat();
- lValue=QString::number((result));
- ui->calc_edit->setText(QString::number(result));
- opt="";
- }
- else if(opt=="-")
- {
- float result=lValue.toFloat()-rvalue.toFloat();
- lValue=QString::number((result));
- ui->calc_edit->setText(QString::number(result));
- opt="";
- }else if(opt=="*")
- {
- float result=lValue.toFloat()*rvalue.toFloat();
- lValue=QString::number((result));
- ui->calc_edit->setText(QString::number(result));
- opt="";
-
- }else if(opt=="/")
- {
- if(rvalue.toInt()==0)
- {
- //qDebug()<<"aaaaaaaa";
- QMessageBox::warning(this,tr("警告"),tr("除数不能为0"));
- return ;
- }
- float result=lValue.toFloat()/rvalue.toFloat();
- lValue=QString::number((result));
- ui->calc_edit->setText(QString::number(result));
- opt="";
- }
-
- }
-
- void Dialog::on_pushButton_clear_clicked()
- {
- ui->calc_edit->clear();
- lValue="";
- opt="";
- flags1=0;
- }
- void Dialog::on_pushButton_close_clicked()
- {
- this->close();
- }
-
- void Dialog::on_pushButton_sub_clicked()
- {
-
- if(opt.length()!=0)
- {
- on_pushButton_equal_clicked();
- }
- opt="-";
- lValue=ui->calc_edit->text();
- flags4=1;
-
- }
-
- void Dialog::on_pushButton_multi_clicked()
- {
- if(opt.length()!=0)
- {
- on_pushButton_equal_clicked();
- }
- opt="*";
- lValue=ui->calc_edit->text();
- flags4=1;
- }
-
- void Dialog::on_pushButton_div_clicked()
- {
-
- if(opt.length()!=0)
- {
- on_pushButton_equal_clicked();
- }
- opt="/";
- lValue=ui->calc_edit->text();
- qDebug()<<lValue;
- flags4=1;
- }
-
- void Dialog::on_pushButton_13_clicked()
- {
-
- QString txt=ui->calc_edit->text();
- if(txt==NULL)
- {
- ui->calc_edit->setText("0."+txt);
- }else
- {
- if(txt.indexOf(".")==-1)
- {
- ui->calc_edit->setText(txt+".");
- }
- else
- {
- ui->calc_edit->setText(txt);
- }
- }
- }

- #include "dialog.h"
- #include <QApplication>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Dialog w;
- w.setMinimumSize(241,311);
- w.setMaximumSize(241,311);
- w.show();
- return a.exec();
- }
截图:
总结:
看似简单的程序,坑还蛮多的,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。