Qt 制作一个简易的计算器

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1.通过UI界面封装出计算器的大致模型

进入设计页面后左侧会有各种控件可以将他们拖拽到你想编辑的窗口中我们要做的是计算器所以只用到很少几个控件我们最主要用到Push Button这个控件来做我们计算器的按钮lineEdit显示数字我们可以将它拖拽到窗口然后就可以对它进行编辑。

 2.创建一个新的类用来完成加减乘除的运算

 Fun类头文件需要定义加减乘除的函数

 Fun类.cpp内实现相应函数

#include "Fun.h"

Fun::Fun(QObject *parent) : QObject(parent)
{

}

double Fun::add(double val0, double val1)
{
    return val0 + val1;
}

double Fun::sub(double val0, double val1)
{
    return val0 - val1;
}

double Fun::mul(double val0, double val1)
{
    return val0 * val1;
}

double Fun::div(double val0, double val1)
{
    return val0 / val1;
}

3.将按键转到槽编写槽函数

进入设计页面右键点击按钮选择转到槽再选择clicked点击信号就能跳转到代码页面自动生成获取点击信号的槽函数在槽函数中就可以编辑点击动作触发的事件了。

按键0--9 "+" " -" "*" "/" "00" "."写法相似

将得到的数字显示在lineEdit上。

清除键、回退键和退出键

 等号键

void MainWindow::on_equalButton_clicked()
{
    QString val;
    val = ui->lineEdit->text();//拿到存在lineEdit的字符串
    if(val.isEmpty()){//判空
        return ;
    }
    if(val.indexOf("+")!=-1){//用indexof的方法找到“+”
        double i,h,j,k;
        i = val.indexOf("+");//找出加号的下标
        h = val.leftRef(i).toDouble();//找到加号前的数字
        j = val.rightRef(val.size() - i).toDouble();//找到加号后的数字
        k = cal.add(h,j);//调用加法函数
        ui->lineEdit->setText(QString::number(k));//将结果输出
    }

    if(val.indexOf("-")!=-1){
        double i,h,j,k;
        i = val.indexOf("-");
        h = val.leftRef(i).toDouble();
        ++i;
        j = val.rightRef(val.size() - i).toDouble();
        k = cal.sub(h,j);
        ui->lineEdit->setText(QString::number(k));
    }

    if(val.indexOf("*")!=-1){
        double i,h,j,k;
        i = val.indexOf("*");
        h = val.leftRef(i).toDouble();
        ++i;
        j = val.rightRef(val.size() - i).toDouble();
        k = cal.mul(h,j);
        ui->lineEdit->setText(QString::number(k));
    }

    if(val.indexOf("/")!=-1){
        double i,h,j,k;
        i = val.indexOf("/");
        h = val.leftRef(i).toDouble();
        ++i;
        j = val.rightRef(val.size() - i).toDouble();
        k = cal.div(h,j);
        ui->lineEdit->setText(QString::number(k));
    }
}

运行结果

由于第一次用Qt做一个简单的项目水平有限所以还是会有许多的bug不足之处还望指正。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6