qt实现一个简单的计算器
1、计算器的界面如下图所示
dalog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include<QPushButton>
#include<QDebug>
#include<QtMath>
const char *a;
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->pushButton_58,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_59,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_53,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_54,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_55,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_68,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_69,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_70,SIGNAL(clicked()),this,SLOT(showdigit()));
connect(ui->pushButton_71,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_72,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_37,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_57,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_56,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_62,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_61,SIGNAL(clicked()),this,SLOT(caculate()));
connect(ui->pushButton_60,SIGNAL(clicked()),this,SLOT(result()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::showdigit()
{ QString tmp = ui->label->text();
if(ui->pushButton_58==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_59==(QPushButton *)sender())
{
tmp +=".";
ui->label->setText(tmp);
}
if(ui->pushButton_53==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_54==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_55==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_2==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_3==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_68==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_69==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
}
if(ui->pushButton_70==(QPushButton *)sender())
{
tmp +="";
ui->label->setText(tmp);
} }
void Dialog::caculate()
{
QString tmp = ui->label->text();
d1 = tmp.toDouble();
if(ui->pushButton_71==(QPushButton *)sender())
{
a = "+";
}
if(ui->pushButton_72==(QPushButton *)sender())
{
a = "/";
}
if(ui->pushButton_4==(QPushButton *)sender())
{
a = "s";//sqrt
}
if(ui->pushButton_37==(QPushButton *)sender())
{
a = "-";
}
if(ui->pushButton_57==(QPushButton *)sender())
{
a = "x";//x^2
}
if(ui->pushButton_56==(QPushButton *)sender())
{
a = "*";
}
if(ui->pushButton_62==(QPushButton *)sender())
{
a = "%";
}
if(ui->pushButton_61==(QPushButton *)sender())
{
ui->label->setText(" ");
}
ui->label->setText(""); }
void Dialog::result()
{
//qDebug()<<"hello";
QString tmp = ui->label->text();
d2 = tmp.toDouble();
QString tmp1; if(a=="-")
{
tmp1.setNum((d1-d2));
ui->label->setText(tmp1);
}
if(a=="+")
{
tmp1.setNum((d1+d2));
ui->label->setText(tmp1);
}
if(a=="%")
{
tmp1.setNum(((int)d1%(int)d2));
ui->label->setText(tmp1);
}
if(a=="x")
{
tmp1.setNum((d1*d1));
ui->label->setText(tmp1);
}
if(a=="*")
{
tmp1.setNum((d1*d2));
ui->label->setText(tmp1);
}
if(a=="s")
{
tmp1.setNum((qSqrt(d1)));
ui->label->setText(tmp1);
}
if(a=="/")
{
tmp1.setNum((d1/d2));
ui->label->setText(tmp1);
}
main.cpp
#include "dialog.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show(); return a.exec();
}
代码结构:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H #include <QDialog> namespace Ui {
class Dialog;
} class Dialog : public QDialog
{
Q_OBJECT public:
Dialog(QWidget *parent = );
~Dialog(); private:
Ui::Dialog *ui; double d1,d2;
public slots:
void showdigit();
void caculate();
void result();
}; #endif // DIALOG_H
编译代码:
#-------------------------------------------------
#
# Project created by QtCreator --25T20::
#
#------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, ): QT += widgets TARGET = caculate
TEMPLATE = app SOURCES += main.cpp\
dialog.cpp HEADERS += dialog.h FORMS += dialog.ui
qt实现一个简单的计算器的更多相关文章
- 使用qt制作一个简单的计算器
前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...
- JS实现一个简单的计算器
使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择 ...
- Android下实现一个简单的计算器源码
下面的内容是关于Android下实现一个简单的计算器的内容. import android.app.Activity; import android.os.Bundle;import android. ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- 使用QT实现一个简单的登陆对话框(纯代码实现C++)
使用QT实现一个简单的登陆对话框(纯代码实现C++) 效果展示 使用的QT控件 控件 描述 QLable 标签 QLineEdit 行文本框 QPushButton 按扭 QHBoxLayout 水平 ...
- 用JavaScript写一个简单的计算器
本文使用js实现了一个简单的加.减.乘.除计算器. 以下是css部分代码: *{ padding:0; margin:0; color: #424242; } .outer{ width:300px; ...
- Qt实现一个简单的TextEditor
使用QT实现简单的TextEditor: 首先在窗口添加部件TextEditor,并设置中文字符 MainWindow::MainWindow(QWidget *parent) : QMainWind ...
- 用c++写一个简单的计算器程序
// 050305.cpp : 定义控制台应用程序的入口点.// // 050304.cpp : 定义控制台应用程序的入口点.////四则运算#include "stdafx.h" ...
- Python 设计一个简单的计算器
设计目标 实现加减乘除及拓号优先级解析 用户输入'1 - 2 * ( (6-3 +(-5/5)*(9-2*3/3 + 7/3*7/4*12 +10 * 5/5 )) - (-4*3)/ (12-3*2 ...
随机推荐
- windows下pip安装python模块时报错
windows下pip安装python模块时报错总结 装载于:https://www.cnblogs.com/maxaimee/p/6515165.html 前言: 这几天把python版本升级后, ...
- ntp 时钟同步
注意: 如果你无法和外部网络的时钟同步,请检查UDP端口时候被封.
- JavaScript Math(数学对象)
Math(数学对象) Math 算术函数和常量 Math.abs( ) 计算绝对值 Math.acos( ) 计算反余弦值 Math.asin( ) 计算反正弦值 Math.atan( ) 计算反正切 ...
- diffMerge安装配置使用
概述: 在用git进行源代码版本维护的时候,常常会进行各代码版本之前区别的查看,例如在每次提交改动前进行git diff 可以看到源文件代码相对相应版本或是远程仓库的改动情况,如果有冲突还需要进行me ...
- C#动态设置匿名类型对象的属性
用C#写WPF程序, 实现功能的过程中碰到一个需求: 动态设置对象的属性,属性名称是未知的,在运行时才能确定. 本来这种需求可以用 Dictionary<string, object> 实 ...
- js_3_for_if_try
在js中有哪些特殊变量? null 指向一个空地址,一个特殊的地址 var u 定义了一个特殊变量u,类型未定义,boolean(u)=false js中的for循环是什么样子? 对列表: for(v ...
- JS的for循环小例子
1.输出1-100的和 var sum = 0; for(var i=1;i<=100;i++){ sum = sum + i; } document.write(sum); 2.输出1-100 ...
- java连接mysql以及增删改查操作
java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...
- junit源码解析--测试驱动运行阶段
前面的博客里面我们已经整理了junit的初始化阶段,接下来就是junit的测试驱动运行阶段,也就是运行所有的testXXX方法.OK,现在我们开始吧. 前面初始化junit之后,开始执行doRun方法 ...
- linkin大话设计模式--简单工厂
linkin大话设计模式--工厂方法 什么是工厂方法:将多个类对象交给工厂来生成的设计被称为简单工厂模式,个人认为主要是为了实现解耦,在代码重构的时候会很重要. 代码如下: public class ...