Qt实现计算器功能
作者:梁光林 发布时间:2022-07-29 06:30:55
标签: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的使用方法。
来源:https://blog.csdn.net/c_shell_python/article/details/85066835


猜你喜欢
- 文件上传下载前台:1. 提交方式:post2. 表单中有文件上传的表单项: <input type=”file” />3. 指定
- 安装JDK/安装JRE以及配置java环境变量对于java初学者来说是一件比较头疼的事情,这边分享一个简单的批处理命令,助大家一步完成JDK
- 最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类。但找了好多篇博客,总是发现有bug。因此就自己来写了个工具类
- jstack - Prints Java thread stack traces for a Java process, core file
- 本文实例为大家分享了C#操作INI配置文件示例的具体代码,供大家参考,具体内容如下源文件地址:C#操作INI配置文件示例创建如图所示的控件:
- spring boot配置hikari连接池属性事件起因与一个简单应用经常发生Young GC,甚至在没有请求量的情况下也经常发生GC (A
- Android 打开相册选择单张图片实现代码
- 一、POI的定义JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 200
- 引言ShardingSphere的SQL解析,本篇文章源码基于4.0.1版本ShardingSphere的分片引擎从解析引擎到路由引擎到改写
- Java try和catch的使用尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常。这样做有两个好
- 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据比如json数据如下:{responseHeader:{status:0
- 泛型类泛型类封装不是特定于具体数据类型的操作。泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等。像从集合中添加和移除项这样的操作都以
- 今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下。这个程序说起来有些历史了,是我11年编写的,那时候学了Android开
- 专栏介绍本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助!本期介绍模式: 简单工厂模式案例: 一个天外陨
- 一、概述log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控
- 实例如下所示:public class JsonExtracter { public static void main(String[] a
- merge结合include优化android布局,效果不知道,个人感觉使用上也有很大的局限,不过还是了解一下,记录下来。布局文件都要有根节
- 本文介绍了 SpringBoot之Controller的使用,分享给大家,具体如下:1.@Controller:处理http请求 2.@Re
- 难点是泛型如何转换一、arrayList<Map<String, Object>>转化json字符串,存入redis
- Spring的出现是为了简化 Java 程序开发,而 SpringBoot 的出现是为了简化 Spring 程序开发.SpringBoot