博客
关于我
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 CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
mutiplemap 总结
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>