收藏 分销(赏)

qt编程简单的计算器.doc

上传人:仙人****88 文档编号:9452627 上传时间:2025-03-26 格式:DOC 页数:21 大小:1.07MB 下载积分:10 金币
下载 相关 举报
qt编程简单的计算器.doc_第1页
第1页 / 共21页
qt编程简单的计算器.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
QT编程实现简易的计算器 一、 实验目的 1) 熟悉QtCreator的简单操作。 2) 了解Qt程序编写框架。  3) 了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。  二、 实验内容  1) 查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton 等。  2) 用QtCreator创建工程,用Qt编写计算器程序。 3) 对计算器程序进行移植。  三、 实验步骤  1. 创建工程  1) 打开QtCreator,如图1所示。  选择File->New File or Project,然后在弹出的对话框中选择Other Project->Empty Qt project(如图2所示),然后进入下一步。   选择Qt版本,这里选择使用Qt4.7.1,取消对Qt in PATH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图5所示)。 实现代码 Calcuulator.h代码: #ifndef CALCULATOR_H #define CALCULATOR_H #include<QApplication> #include<QDialog> #include<QPushButton> #include<QLineEdit> class Calculator:public QDialog { Q_OBJECT protected: QLineEdit *lineEditor; QPushButton *button_0; QPushButton *button_1; QPushButton *button_2; QPushButton *button_3; QPushButton *button_4; QPushButton *button_5; QPushButton *button_6; QPushButton *button_7; QPushButton *button_8; QPushButton *button_9; QPushButton *button_ce; QPushButton *button_jia; QPushButton *button_jian; QPushButton *button_cheng; QPushButton *button_chu; QPushButton *button__; QPushButton *button_dengyu; int num1,num2,result; // bool zhenghao; // int mark; // char fuhao; // QString S; // public: Calculator(); private slots: void button_0_clicked(); void button_1_clicked(); void button_2_clicked(); void button_3_clicked(); void button_4_clicked(); void button_5_clicked(); void button_6_clicked(); void button_7_clicked(); void button_8_clicked(); void button_9_clicked(); void button_ce_clicked(); void button_jia_clicked(); void button_jian_clicked(); void button_cheng_clicked(); void button_chu_clicked(); void button__clicked(); void button_dengyu_clicked(); }; #endif // CALCULATOR_H Calculator.cpp代码: #include<QLayout> #include<QHBoxLayout> #include<QVBoxLayout> #include<QLineEdit> #include<cmath> #include"calculator.h" Calculator::Calculator() { num1=0; num2=0; result=0; zhenghao=true; mark=1; lineEditor=new QLineEdit("0"); S=""; button_0=new QPushButton("0"); button_1=new QPushButton("1"); button_2=new QPushButton("2"); button_3=new QPushButton("3"); button_4=new QPushButton("4"); button_5=new QPushButton("5"); button_6=new QPushButton("6"); button_7=new QPushButton("7"); button_8=new QPushButton("8"); button_9=new QPushButton("9"); button_ce=new QPushButton("CE"); button_cheng=new QPushButton("*"); button_jia=new QPushButton("+"); button_jian=new QPushButton("-"); button_chu=new QPushButton("/"); button__=new QPushButton("+/-"); button_dengyu=new QPushButton("="); QHBoxLayout *Hl1=new QHBoxLayout; QHBoxLayout *Hl2=new QHBoxLayout; QHBoxLayout *Hl3=new QHBoxLayout; QHBoxLayout *Hl4=new QHBoxLayout; QHBoxLayout *Hl5=new QHBoxLayout; Hl1->addWidget(lineEditor); Hl1->addWidget(button_ce); Hl2->addWidget(button_1); Hl2->addWidget(button_2); Hl2->addWidget(button_3); Hl2->addWidget(button_jia); Hl3->addWidget(button_4); Hl3->addWidget(button_5); Hl3->addWidget(button_6); Hl3->addWidget(button_jian); Hl4->addWidget(button_7); Hl4->addWidget(button_8); Hl4->addWidget(button_9); Hl4->addWidget(button_cheng); Hl5->addWidget(button__); Hl5->addWidget(button_0); Hl5->addWidget(button_dengyu); Hl5->addWidget(button_chu); QVBoxLayout *V1=new QVBoxLayout; V1->addLayout(Hl1); V1->addLayout(Hl2); V1->addLayout(Hl3); V1->addLayout(Hl4); V1->addLayout(Hl5); connect(button_0,SIGNAL(clicked()),this,SLOT(button_0_clicked())); connect(button_1,SIGNAL(clicked()),this,SLOT(button_1_clicked())); connect(button_2,SIGNAL(clicked()),this,SLOT(button_2_clicked())); connect(button_3,SIGNAL(clicked()),this,SLOT(button_3_clicked())); connect(button_4,SIGNAL(clicked()),this,SLOT(button_4_clicked())); connect(button_5,SIGNAL(clicked()),this,SLOT(button_5_clicked())); connect(button_6,SIGNAL(clicked()),this,SLOT(button_6_clicked())); connect(button_7,SIGNAL(clicked()),this,SLOT(button_7_clicked())); connect(button_8,SIGNAL(clicked()),this,SLOT(button_8_clicked())); connect(button_9,SIGNAL(clicked()),this,SLOT(button_9_clicked())); connect(button_jia,SIGNAL(clicked()),this,SLOT(button_jia_clicked())); connect(button_jian,SIGNAL(clicked()),this,SLOT(button_jian_clicked())); connect(button_cheng,SIGNAL(clicked()),this,SLOT(button_cheng_clicked())); connect(button_chu,SIGNAL(clicked()),this,SLOT(button_chu_clicked())); connect(button_dengyu,SIGNAL(clicked()),this,SLOT(button_dengyu_clicked())); connect(button_ce,SIGNAL(clicked()),this,SLOT(button_ce_clicked())); connect(button__,SIGNAL(clicked()),this,SLOT(button__clicked())); setLayout(V1); } void Calculator::button_0_clicked() { S+="0"; lineEditor->setText(S); if(mark==1){ num1=num1*10+0; }else{ num2=num2*10; } } void Calculator::button_1_clicked(){ S+="1"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+1; }else{ num1=num1*10-1; } }else{ if(zhenghao){ num2=num2*10+1; }else{ num2=num2*10-1; } } } void Calculator::button_2_clicked(){ S+="2"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+2; }else{ num1=num1*10-2; } }else{ if(zhenghao){ num2=num2*10+2; }else{ num2=num2*10-2; } } } void Calculator::button_3_clicked(){ S+="3"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+3; }else{ num1=num1*10-3; } }else{ if(zhenghao){ num2=num2*10+3; }else{ num2=num2*10-3; } } } void Calculator::button_4_clicked(){ S+="4"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+4; }else{ num1=num1*10-4; } }else{ if(zhenghao){ num2=num2*10+4; }else{ num2=num2*10-4; } } } void Calculator::button_5_clicked(){ S+="5"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+5; }else{ num1=num1*10-5; } }else{ if(zhenghao){ num2=num2*10+5; }else{ num2=num2*10-5; } } } void Calculator::button_6_clicked(){ S+="6"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+6; }else{ num1=num1*10-6; } }else{ if(zhenghao){ num2=num2*10+6; }else{ num2=num2*10-6; } } } void Calculator::button_7_clicked(){ S+="7"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+7; }else{ num1=num1*10-7; } }else{ if(zhenghao){ num2=num2*10+7; }else{ num2=num2*10-7; } } } void Calculator::button_8_clicked(){ S+="8"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+8; }else{ num1=num1*10-8; } }else{ if(zhenghao){ num2=num2*10+8; }else{ num2=num2*10-8; } } } void Calculator::button_9_clicked(){ S+="9"; lineEditor->setText(S); if(mark==1){ if(zhenghao){ num1=num1*10+9; }else{ num1=num1*10-9; } }else{ if(zhenghao){ num2=num2*10+9; }else{ num2=num2*10-9; } } } void Calculator::button_jia_clicked(){ S+="+"; lineEditor->setText(S); zhenghao=true; fuhao='+'; mark=2; } void Calculator::button_jian_clicked(){ S+="-"; lineEditor->setText(S); zhenghao=true; fuhao='-'; mark=2; } void Calculator::button_cheng_clicked(){ S+="*"; lineEditor->setText(S); zhenghao=true; fuhao='*'; mark=2; } void Calculator::button_chu_clicked(){ S+="/"; lineEditor->setText(S); zhenghao=true; fuhao='/'; mark=2; } void Calculator::button__clicked(){ S+="-"; lineEditor->setText(S); zhenghao=false; } void Calculator::button_dengyu_clicked(){ S+="="; // lineEditor->setText(S); switch(fuhao){ case '+':result=num1+num2;break; case '-':result=num1-num2;break; case '*':result=num1*num2;break; case '/':if(num2)result=num1/num2;break; } int i=0; int result1=result; while(result1){ i++; result1/=10; } for(;i;i--){ S+=(result/(int)pow(10,i-1)+'0'); result%=(int)pow(10,i-1); } lineEditor->setText(S); zhenghao=true; num1=num2=0; mark=1; S=""; } void Calculator::button_ce_clicked() { zhenghao=false; S=""; lineEditor->setText("0"); num1=num2=0; mark=1; } Main代码: #include"calculator.h" int main(int argc,char *argv[]) { QApplication app(argc,argv); Calculator cal; cal.show(); return app.exec(); } 运行结果  四、总结 通过计算器设计,学到了利用Qt设计简单窗口应用程序的的方法,初步了解了使用QT工具编写窗口程序的新颖,了解了槽和信号等基本知识,学会了如何使用新工具(Qt)帮助程序开发。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服