博客
关于我
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之联合查询UNION
查看>>
mysql之连接查询,多表连接
查看>>
mysql乐观锁总结和实践 - 青葱岁月 - ITeye博客
查看>>
mysql也能注册到eureka_SpringCloud如何向Eureka中进行注册微服务-百度经验
查看>>
mysql乱码
查看>>
Mysql事务。开启事务、脏读、不可重复读、幻读、隔离级别
查看>>
MySQL事务与锁详解
查看>>
MySQL事务原理以及MVCC详解
查看>>
MySQL事务及其特性与锁机制
查看>>
mysql事务理解
查看>>
MySQL事务详解结合MVCC机制的理解
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
webpack css文件处理
查看>>
mysql二进制包安装和遇到的问题
查看>>
MySql二进制日志的应用及恢復
查看>>
mysql互换表中两列数据方法
查看>>
mysql五补充部分:SQL逻辑查询语句执行顺序
查看>>
mysql交互式连接&非交互式连接
查看>>
MySQL什么情况下会导致索引失效
查看>>