Qt实现计算器功能

 更新时间:2022年08月22日 10:27:23   作者:梁光林  
这篇文章主要为大家详细介绍了Qt实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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的使用方法。

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

相关文章

  • C++实现俄罗斯方块(linux版本)

    C++实现俄罗斯方块(linux版本)

    这篇文章主要为大家详细介绍了linux版本C++实现俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C++实现AVL树的完整代码

    C++实现AVL树的完整代码

    AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 今天通过本文给大家分享C++实现AVL树的完整代码,感兴趣的朋友一起看看吧
    2021-06-06
  • C++另辟蹊径计算1到n的和

    C++另辟蹊径计算1到n的和

    从1加到100,高斯的故事,我们学过。今天,我们写一个程序来试试。首先,用笨方法。一个数一个数的加,我们一般人就是这样干的吗。在计算机程序里面,怎么办呢?1我们把求和的功能写成一个可以针对不同的N运用的,C++里面叫函数
    2023-02-02
  • c++中.dll与.lib文件的生成与使用的详解

    c++中.dll与.lib文件的生成与使用的详解

    本篇文章介绍了,在c++中.dll与.lib文件的生成与使用的详细介绍,需要的朋友参考下
    2013-05-05
  • C++编程异常处理中try和throw以及catch语句的用法

    C++编程异常处理中try和throw以及catch语句的用法

    这篇文章主要介绍了C++编程异常处理中try和throw以及catch语句的用法,包括对Catch块的计算方式的介绍,需要的朋友可以参考下
    2016-01-01
  • c++ vector 常用函数示例解析

    c++ vector 常用函数示例解析

    这篇文章主要介绍了c++ vector 常用函数示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 关于C/C++中的side effect(负效应)和sequence point(序列点)

    关于C/C++中的side effect(负效应)和sequence point(序列点)

    不知你在写code时是否遇到这样的问题?int i = 3; int x = (++i) + (++i) + (++i); 问x值为多少?进行各种理论分析,并在编译器上实践,然而可能发现最终的结果是不正确的,也是不稳定的,不同的编译器可能会产生不同的结果。这让人很头疼
    2013-10-10
  • C语言判断字符串是否回文三种方法实例

    C语言判断字符串是否回文三种方法实例

    回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的,下面这篇文章主要给大家介绍了关于C语言判断字符串是否回文的三种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • C++实现电子时钟效果

    C++实现电子时钟效果

    这篇文章主要为大家详细介绍了C++实现电子时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工作价值,快来跟随小编学习一下吧
    2021-12-12

最新评论