博客
关于我
Qt 简易计算器小程序
阅读量:315 次
发布时间:2019-03-03

本文共 2708 字,大约阅读时间需要 9 分钟。

刚接触Qt,没有使用QtDesigner来编写ui文件,纯vs编写

calculator.h与calculator.cpp由自己编写,main.cpp与ui_calculator.h由vs生成

calculator.h

#pragma once#pragma execution_character_set("utf-8")#include 
#include "ui_calculator.h"#include
#include
#include
#include
#include
#include
class calculator : public QMainWindow{ Q_OBJECTpublic: calculator(QWidget *parent = Q_NULLPTR);public slots : void jisuan();private: Ui::calculatorClass ui; QLabel *number_1; QLabel *number_2; QLineEdit *numline_1; QLineEdit *numline_2; QButtonGroup *oper; QRadioButton *plus; QRadioButton *minus; QRadioButton *multiply; QRadioButton *divide; QLabel *resultlabel; QLineEdit *result; QPushButton *cal; QGridLayout *mainlayout;};

calculator.cpp

#include "calculator.h"calculator::calculator(QWidget *parent)	: QMainWindow(parent){	ui.setupUi(this);	number_1 = new QLabel("数字1:");	number_2 = new QLabel("数字2:");	numline_1 = new QLineEdit;	numline_2 = new QLineEdit;	QRegExp regx("[0-9]+$");	QValidator *validator = new QRegExpValidator(regx);	numline_1->setValidator(validator);	numline_2->setValidator(validator);//限制输入的为数字	oper = new QButtonGroup;	plus = new QRadioButton("+");	minus = new QRadioButton("-");	multiply = new QRadioButton("*");	divide = new QRadioButton("/");	oper->addButton(plus);	oper->addButton(minus);	oper->addButton(multiply);	oper->addButton(divide);	oper->setExclusive(true);	resultlabel = new QLabel("计算结果:");	result = new QLineEdit;	cal = new QPushButton("计算");	cal->setShortcut(QKeySequence(QLatin1String("Enter")));	mainlayout = new QGridLayout(ui.centralWidget);	mainlayout->addWidget(number_1, 0, 0);	mainlayout->addWidget(numline_1, 0, 1,1,3);	mainlayout->addWidget(number_2, 1, 0);	mainlayout->addWidget(numline_2, 1, 1,1,3);	mainlayout->addWidget(plus,2,0);	mainlayout->addWidget(minus, 2, 1);	mainlayout->addWidget(multiply, 2, 2);	mainlayout->addWidget(divide, 2, 3);	mainlayout->addWidget(cal, 3, 0,1,4);	mainlayout->addWidget(resultlabel, 4, 0);	mainlayout->addWidget(result, 4, 1,1,3);		connect(cal, SIGNAL(clicked()), this, SLOT(jisuan()));	}void calculator::jisuan(){	QString n1 = numline_1->text();	QString n2 = numline_2->text();	double num1 = n1.toDouble();	double num2 = n2.toDouble();	double res = 0.0;	if (plus->isChecked())	{		res = num1 + num2;	}	if (minus->isChecked())	{		res = num1 - num2;	}	if (multiply->isChecked())	{		res = num1 * num2;	}	if (divide->isChecked())	{		res = num1 / num2;	}	QRegExp rx;	rx.setPattern("(\\.){0,1}0+$");	QString res2= QString("%1").arg(res, 0, 'f', -1).replace(rx, "");	//使用正则表达式去除小数后多余的0	result->setText(res2);	if (divide->isChecked() && num2 == 0)	{		result->setText("Error");	}}

效果如图

在这里插入图片描述

转载地址:http://apdq.baihongyu.com/

你可能感兴趣的文章
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>