linux qt小型计算器,Qt实现一个简单的计算器
Qt实现一个简单的计算器
作者:hackett
微信公众号:加班猿
一、UI界面版
运行效果:输入num1和num2选择+-*/点击计算即可
UI界面设计:
3个lineEdit(lineEditNum1,lineEditNum2,lineEditSum)
2个PushButton(buttonClear,ButtonCalc)
1个comboBox
1个label
布局:
3个lineEdit和1个comboBox、1个label水平布局
2个PushButton和一个弹簧水平布局
最后整体布局即可
main.cpp#include "mainwindow.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_buttonCalc_clicked()
{
double num1 = ui->lineEditNum1->text().toDouble();//获取num1的值
double num2 = ui->lineEditNum2->text().toDouble();//获取num2的值
uint8_t index = ui->comboBox->currentIndex(); //获取下拉框的下标0 +, 1 - ,2 *, 3 /
double result = 0.0;
switch (index) {
case 0:
result = num1 + num2;
break;
case 1:
result = num1 - num2;
break;
case 2:
result = num1 * num2;
break;
case 3:
if(num2 == 0)
{
QMessageBox::about(this,"注意","除数不能为0");
return;
}
result = num1 / num2;
break;
default:
break;
}
ui->lineEditSum->setText(QString::number(result));
}
void MainWindow::on_buttonClear_clicked()
{
ui->lineEditNum1->clear();
ui->lineEditNum2->clear();
ui->lineEditSum->clear();
}
mainwindow.h#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_buttonCalc_clicked();//计算结果槽函数
void on_buttonClear_clicked();//清除输入框槽函数
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
二、纯代码版
注:只能两个数单独加减乘除,不能连续运算,按‘ = ’重新开始两个数运算
main.cpp#include "calc.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Calc w;
w.show();
return a.exec();
}
calc.cpp#include "calc.h"
#include
#include
#include
#include
#include
Calc::Calc(QWidget *parent) :
QWidget(parent)
{
//获取字体QFont
QFont font = this->font();
font.setPixelSize(30);
this->setFont(font);
//保存键盘值
QString keys="789-456*123/0.+=";
QVBoxLayout *vbox = new QVBoxLayout();
QSizePolicy qsPolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
for(int i=0; i<4; i++)
{
QHBoxLayout *hbox = new QHBoxLayout();
for(int j=0; j<4; j++)
{
buttons[i*4+j] = new QToolButton(this);
//设置文本
buttons[i*4+j]->setText(keys.mid(i*4+j, 1));
hbox->addWidget(buttons[i*4+j]);
//策略设置
buttons[i*4+j]->setSizePolicy(qsPolicy);
//把按钮触发信号关联槽函数
connect(buttons[i*4+j], SIGNAL(clicked(bool)),this, SLOT(buttons_chick()));
}
//把水平布局管理器添加到垂直布局管理器中
vbox->addLayout(hbox);
}
//创建一个输入框
edit = new QLineEdit(this);
edit->setSizePolicy(qsPolicy);
edit->setMaximumHeight(60);
edit->setAlignment(Qt::AlignRight);
QVBoxLayout *allVbox = new QVBoxLayout(this);
allVbox->addWidget(edit);
allVbox->addLayout(vbox);
//初始化
firstNumber.clear();
secondNumber.clear();
calcflag = 0;
}
Calc::~Calc()
{
}
void Calc::input_data(QString str)
{
if(calcflag == 0)
{
firstNumber.append(str);
edit->setText(firstNumber);
}else
{
secondNumber.append(str);
edit->setText(secondNumber);
}
}
void Calc::buttons_chick()
{
//通过信号发送者获取按钮对象
QToolButton *button = (QToolButton*)sender();
//qDebug()
QString str = button->text();
QString datastr = ".0123456789";
QStringList typestr;
typestr<
if(datastr.indexOf(str) >= 0)//获取按键值
{
input_data(str); //输入数据
}else if(typestr.indexOf(str)>=0)
{
calcflag = typestr.indexOf(str)+1;//获取运算符号type
}else //=
{
double result = 0.0;
switch (calcflag) {
case 1:
result = firstNumber.toDouble()+secondNumber.toDouble();
break;
case 2:
result = firstNumber.toDouble()-secondNumber.toDouble();
break;
case 3:
result = firstNumber.toDouble()*secondNumber.toDouble();
break;
case 4:
result = firstNumber.toDouble()/secondNumber.toDouble();
break;
default:
break;
}
edit->setText(QString::number(result));
calcflag = 0;
firstNumber.clear();
secondNumber.clear();
}
}
calc.h#ifndef CALC_H
#define CALC_H
#include
#include
#include
class Calc : public QWidget
{
Q_OBJECT
public:
explicit Calc(QWidget *parent = 0);
~Calc();
void input_data(QString str);
protected slots:
void buttons_chick();//按键槽函数
private:
QToolButton *buttons[16]; //按钮数组
QLineEdit *edit; //输入框
QString firstNumber; //记录输入第一个数值
QString secondNumber; //记录输入第一个数值
int calcflag; //1-add, 2-sub, 3-mul, 4-div
};
#endif // CALC_H
如果你觉得文章还不错,记得"点赞关注"
关注我的微信公众号【 加班猿 】可以获取更多内容
linux qt小型计算器,Qt实现一个简单的计算器相关推荐
- python语言设计简单计算器_Python 设计一个简单的计算器-Go语言中文社区
设计目标 实现加减乘除及拓号优先级解析 用户输入'1 - 2 * ( (6-3 +(-5/5)*(9-2*3/3 + 7/3*7/4*12 +10 * 5/5 )) - (-4*3)/ (12-3*2 ...
- python123程序设计题说句心里话_用c++写一个简单的计算器程序
// 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...
- android实现计算器功能吗,利用Android实现一个简单的计算器功能
利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...
- vue设置一个简单的计算器
vue设置一个简单的计算器 <div id="app"><input type="text" v-model="n1"&g ...
- Windows10 手机应用程序开发 - 3. 做一个简单的计算器界面
2019独角兽企业重金招聘Python工程师标准>>> 目标:完成一个简单的计算器的界面,暂时不做点击处理,主要联系UI布局. 步骤: 1.创建一个空的windows phone 项 ...
- 正则表达式应用:实现一个简单的计算器
实现一个简单的计算器,代码如下: 下面的函数用来检验数学表达式的合规性,当然此处只实现两个检验:(1)括号应该闭合 (2)不能出现字母 def check_expression(str):check_ ...
- python计算器教程,用Python程序制作一个简单的计算器
用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...
- JS实现一个简单的计算器
使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择 ...
- 用C语言实现一个简单的计算器代码
#include <stdio.h> #include <math.h> #include <stdlib.h> //预处理指令 int main(void) {d ...
最新文章
- 任正非:华为5G是瞎猫碰死老鼠
- flash与php交互,flash与PHP的交互技巧
- 李开复:AlphaGo 若打败了世界冠军,意味着什么?
- [self Introduce]MY job pic
- 发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方案
- 如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
- jax-ws和jax-rs_使用JAX-RS和Spring构建HATEOAS API
- 【转】C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
- mapinfo图层导入奥维_(通信技能分享)怎样把谷歌地球上画的路线图导入到测试软件中!...
- 手环升级鸿蒙设备名单,定档6月2日!鸿蒙“首批”升级名单公布,共计11款华为机型!...
- JAVASCRIPT和数据结构,算法
- gitlab创建分支上传文件_环境搭建:gitLab平台的搭建和简单使用
- 约瑟夫环(C语言实现)
- TFS2010的生成功能
- windows 搭建kms服务器激活_OpenWrt搭建KMS服务器激活Windows和Office
- Unable to open OMF51 file...
- oracle可恢复的等待,【案例】Oracle RAC恢复报错RMAN-06004 RMAN-20003解决办法笔记
- 湘乡秸秆综合利用组合拳完善产业链 国稻种芯现代饲料规划
- hdmi接口有什么用_显示器有哪些接口?DP、HDMI、VGA、DVI有什么区别?
- 如何处理httpclient的ssl错误