Qt实现 计算器

该计算器主要通过lineEdit获取和显示数字,通过tableview显示计算过程。

通过tableview显示计算的过程,QLineEdit获取输入的数字,QComboBox实现不同的计算类型。

效果:

代码:

main.cpp

#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.setWindowTitle("计算器");
    w.show();

    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItemModel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    int setCount();

private slots:
    void on_btn_cal_clicked();

private:
    Ui::MainWindow *ui;
    QStandardItemModel *model;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>
#include <QMessageBox>
#include <QStandardItem>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //初始化model
    model=new QStandardItemModel();

    //设置列标题
    model->setHorizontalHeaderItem(0,new QStandardItem("数字A"));

    model->setHorizontalHeaderItem(1,new QStandardItem("符号"));

    model->setHorizontalHeaderItem(2,new QStandardItem("数字B"));

    model->setHorizontalHeaderItem(3,new QStandardItem("结果"));

    //将模型与视图绑定
    ui->tableView->setModel(model);

    //设置表格单元不能编辑
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

    //设置列表宽度
    for(int i=0;i<4;++i)
    {
        ui->tableView->setColumnWidth(i,50);
    }

}

MainWindow::~MainWindow()
{
    delete ui;
}

int MainWindow::setCount()
{
    int ret=0;

    //获取lineEdit上的内容
    QString num1=ui->num1->text();
    if(num1.isEmpty())
    {
        return -1;
    }

    QString num2=ui->num2->text();
    if(num2.isEmpty())
    {
        return -1;
    }

    QString symbol=ui->comboBox->currentText();

    if(symbol == "+")
    {
        ret=num1.toInt()+num2.toInt();
    }
    else if(symbol == "-")
    {
        ret=num1.toInt()-num2.toInt();
    }
    else if(symbol == "*")
    {
        ret=num1.toInt()*num2.toInt();
    }
    else if(symbol == "/")
    {
        if(num2.toInt()==0)
            return -2;
        ret=num1.toInt()/num2.toInt();
    }

    return ret;
}


//计算
void MainWindow::on_btn_cal_clicked()
{
    int result=setCount();
    if(result==-1)
    {
      QMessageBox::warning(this,"提示","存在输入项为空!","确定");
      ui->result->clear();
      return;
    }
    else if(result==-2)
    {
        QMessageBox::warning(this,"提示","除数为0!","确定");
        ui->result->clear();
        return;
    }

    //绑定值到视图中
    model->setItem(0,0,new QStandardItem(ui->num1->text()));
    model->setItem(0,1,new QStandardItem(ui->comboBox->currentText()));
    model->setItem(0,2,new QStandardItem(ui->num2->text()));
    model->setItem(0,3,new QStandardItem(QString::number(result)));

    //设置result需要显示的值
    ui->result->setText(QString::number(result));

}

以上主要是强化tableview的使用,体会model的使用方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值