Qt简易计算器

        期末考试之后回家复习qt的相关知识,考虑先做一个简单的qt小demo,复习信号槽之类的,于是做了一个qt的简易计算器.

        计算器只具有整数的加减乘除的基本功能,使用了LineEdit  和 pushButton ,简单易懂。

        制作这个小demo的基本思路如下。

        1.需求分析

                使用QT制作一个简易的计算器,点击数字和计算的符号进行运算。

        2.UI界面构建

                这里直接在QT的UI界面对计算器进行界面绘制。

Qt简易计算器_第1张图片

        这里整个Widget使用垂直分布,上面使用LineEdit作为显示框,下面使用PushButton表示每一个按钮,下面的widget使用栅栏布局4*4

        3.按钮绑定,功能编辑

        先对按钮进行绑定,这里为了避免代码的冗杂,封装了一个处理函数delNum对点击事件进行处理。

   //绑定信号槽点击事件
    //      按钮:事件的发起者 动作:点击    接收者  反应:调用处理函数
    connect(ui->btn_n0,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n1,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n2,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n3,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n4,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n5,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n6,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n7,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n8,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_n9,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_denghao,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_chufa,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_chengfa,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_jiafa,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_jianfa,SIGNAL(pressed()),this,SLOT(dealNum()));
    connect(ui->btn_x,SIGNAL(pressed()),this,SLOT(dealNum()));

dealNum函数如下:获取点击的内容,进行相应的操作,最后在显示部分进行显示 ,点击等号后便根据上面的运算符号进行计算。

                

void Widget:: dealNum(){
    //获取信号的发送者
    QPushButton * btn = (QPushButton *)this->sender();
    //获取发送者按钮的内容
    QString str = btn->text();
    //首先考虑是不是退格键
    if("X" == str){
        //是  截掉最后一个字符
        buf.chop(1);
    }
    else {
        //不是 追加

        buf += str;
        // 运算操作
        if("=" == str)
        { // 如果是 " = "
            char str[100] = {0};
            //使用 strcpy 函数将 buf 的内容转换为本地8位编码后复制到 str 中。
            strcpy(str, buf.toLocal8Bit().data());
            int a, b;
            char c;
            //使用 sscanf 函数从 str 中读取格式化的数据。
            //123x456
            //a = 123 c = x b =456
            sscanf(str, "%d%c%d", &a, &c, &b);
            if('+' == c)
            {
                buf = QString::number(a+b);
            }
            else if('-' == c)
            {
                buf = QString::number(a-b);
            }
            else if('*' == c)
            {
               buf = QString::number(a*b);
            }

            else if('/' == c){
                buf = QString::number(a/b);
            }
        }

    }

    //将内容显示
    ui->lineEdit->setText(buf);
}

成功展示:

        Qt简易计算器_第2张图片Qt简易计算器_第3张图片

你可能感兴趣的:(qt学习,qt,开发语言)