Qt实现计算器功能

2022-08-22 11:12:36

本文实例为大家分享了Qt实现计算器功能的具体代码,供大家参考,具体内容如下该计算器主要通过lineEdit获取和显示数字,通过tableview显示计算过程。通过tableview显示计算的过程,QL...

本文实例为大家分享了Qt实现计算器功能的具体代码,供大家参考,具体内容如下

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

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

效果:

Qt实现计算器功能

代码:

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->currentTephpxt();

  if(symbol == "+")
  {
    ret=num1.toInt()+num2.toInt();
  }
  else if(symbol == "-")
  {
    ret=num1.toInt()-num2.toInt();
  }
  else if(symbol == "*")
  {
    ret=num1.toInt()*num2.toInt();android
  }
  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));

}
python

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。