分享

qt中 做一个简单的加法计算器

 GLL_ 2018-07-11
<CalculatorDialog.h>
1 #ifndef _CALCULATORDIALOG_H_
  2 #define _CALCULATORDIALOG_H_
  3
  4 #include <QDialog>
  5 #include <QLabel>
  6 #include <QPushButton>
  7 #include <QLineEdit>// 输入文本的组件
  8 #include <QDoubleValidator>//双精度的校验器
  9 #include <QHBoxLayout>//水平布局器
 10
 11 class CalculatorDialog:public QDialog{
 12     Q_OBJECT//MOC编译器,把不符合标准的语法变成标准C++语法
 13 public:
 14     CalculatorDialog(void);
 15 private:
 16     QLineEdit* m_editX;//左操作数
 17     QLineEdit* m_editY;//右操作数
 18     QLabel* m_label;//操作符号
 19     QPushButton* m_btnCalc;//等号按钮
 20     QLineEdit* m_editZ;//保存结果,只读属性
 21 private slots://声明私有的槽函数
 22     void enableCalcButton(void);//使能等号按钮
 23     void calcClicked(void);//计算结果
 24
 25
 26 };
 27 #endif //_CALCULATORDIALOG_H_

<CalculatorDialog.cpp>
​  1 #include "CalculatorDialog.h"
  2 //构造函数中初始化UI界面
  3 CalculatorDialog::CalculatorDialog(void){
  4     //设置对话框的标题
  5     setWindowTitle("加法计算器");
  6     m_editX = new QLineEdit(this);
  7     //设置文本右对其
  8     m_editX->setAlignment(Qt::AlignRight);
  9     //设置验证器,只能输入数字
 10     m_editX->setValidator(new QDoubleValidator(this));
 11
 12     m_editY = new QLineEdit(this);
 13     //设置文本右对其
 14     m_editY->setAlignment(Qt::AlignRight);
 15     //设置验证器,只能输入数字
 16     m_editY->setValidator(new QDoubleValidator(this));
 17
 18     m_editZ = new QLineEdit(this);
 19     //设置文本右对其
 20     m_editZ->setAlignment(Qt::AlignRight);
 21     //设置验证器,只能输入数字
 22     m_editZ->setValidator(new QDoubleValidator(this));
 23     m_editZ->setReadOnly(true);//设置只读
 24
 25     m_btnCalc = new QPushButton("=",this);
 26     m_btnCalc->setEnabled(false);//设置禁用
 27
 28     m_label = new QLabel("+");
 29     //使用水平布局器,自动调整每个组件的大小和位置
 30     //创建布局器
 31     QHBoxLayout* layout = new QHBoxLayout;
 32     //将组件顺序添加到布局器中
 33     layout->addWidget(m_editX);
 34     //layout->addWidget(new QLabel("+")); //也可以
 35     layout->addWidget(m_label);
 36     layout->addWidget(m_editY);
 37     layout->addWidget(m_btnCalc);
 38     layout->addWidget(m_editZ);
 39     //设置布局器
 40     setLayout(layout);
 41
​42     //编辑框内容改变时发出信号,尝试使能等号按钮
 43     connect(m_editX,SIGNAL(textChanged(const QString&)),this,
 44             SLOT(enableCalcButton()));
 45     connect(m_editY,SIGNAL(textChanged(const QString&)),this,
 46             SLOT(enableCalcButton()));
 47     //点击等号按钮,计算结果并显示
 48     connect(m_btnCalc,SIGNAL(clicked()),this,SLOT(calcClicked()));
 49 }
 50 //
 51 void CalculatorDialog::enableCalcButton(void){
 52    bool bXok;
 53    bool bYok;
 54    //获取输入框的数据
 55    //转换成 浮点数
 56    m_editX->text().toDouble(&bXok);
 57    m_editY->text().toDouble(&bYok);
 58    //如果左右操作数都是有效的数字,使能等号按钮
 59    if(bXok && bYok){
 60        m_btnCalc->setEnabled(true);
 61    }
 62    else{
 63        m_btnCalc->setEnabled(false);
 64
 65    }
 66 }
 67
 68 void CalculatorDialog::calcClicked(void){
 69     double res = m_editX->text().toDouble() +
 70         m_editY->text().toDouble();
 71     QString str = QString::number(res,'g',15);
 72     //显示结果到m_editZ
 73     m_editZ->setText(str);
 74 }
                         
<Calculator.cpp>
  1 #include <QApplication>
  2 #include "CalculatorDialog.h"
  3
  4 int main(int argc,char** argv){
  5
  6     QApplication app(argc,argv);
  7     CalculatorDialog dialog;
  8     dialog.show();
  9     return app.exec();
 10
 11
 12 }


​上面这三个文件在同一个文件夹里
​写完之后
​1、qmake -project
​2、将上步生成的pro文件(Calculator.pro) 添加 代码 QT += widgets
​3、qmake
​4、make
​5、执行程序  Calculator 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约