博客
关于我
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——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
查看>>
mysql丢失更新问题
查看>>
MySQL两千万数据优化&迁移
查看>>
MySql中 delimiter 详解
查看>>