




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成都理工大学Qt课程设计报告Qt课程设计报告起止日期: 2011年9月-2012年1月院系名称:信息科学与技术学院软件工程系指导老师:xxxx班 级:xxxxx学 号:xxxxx姓 名:xxx1. 源代码:button.h#ifndef BUTTON_H#define BUTTON_H #include class Button : public QToolButton Q_OBJECT public: Button(const QString &text, QWidget *parent = 0); QSize sizeHint() const; ; #endifButton.cpp#include #include button.h Button:Button(const QString &text, QWidget *parent) : QToolButton(parent) setSizePolicy(QSizePolicy:Expanding, QSizePolicy:Preferred); setText(text); QSize Button:sizeHint() const QSize size = QToolButton:sizeHint(); size.rheight() += 20; size.rwidth() = qMax(size.width(), size.height(); return size; Calculator.h#ifndef CALCULATOR_H#define CALCULATOR_H #include class QLineEdit; class Button; class Calculator : public QDialog Q_OBJECT public: Calculator(QWidget *parent = 0); private slots: void digitClicked(); void additiveOperatorClicked(); void multiplicativeOperatorClicked(); void equalClicked(); void pointClicked(); void backspaceClicked(); void clear(); void clearAll(); private: Button *createButton(const QString &text, const char *member); void abortOperation(); bool calculate(double rightOperand, const QString &pendingOperator); double sumInMemory; double sumSoFar; double factorSoFar; QString pendingAdditiveOperator; QString pendingMultiplicativeOperator; bool waitingForOperand; QLineEdit *display; enum NumDigitButtons = 10 ; Button *digitButtonsNumDigitButtons; ; #endifCalculator.cpp#include #include #include button.h#include calculator.hCalculator:Calculator(QWidget *parent) : QDialog(parent) sumInMemory = 0.0; sumSoFar = 0.0; factorSoFar = 0.0; waitingForOperand = true; display = new QLineEdit(0); display-setReadOnly(true); display-setAlignment(Qt:AlignRight); display-setMaxLength(15); QFont font = display-font(); font.setPointSize(font.pointSize() + 8); display-setFont(font); for (int i = 0; i NumDigitButtons; +i) digitButtonsi = createButton(QString:number(i), SLOT(digitClicked(); Button *pointButton = createButton(tr(.), SLOT(pointClicked();/定义点按钮 并且与槽函数 pointClicked()建立连接。 Button *backspaceButton = createButton(tr(setSizeConstraint(QLayout:SetFixedSize); mainLayout-addWidget(display, 0, 0, 1, 6); mainLayout-addWidget(backspaceButton, 1, 0,1,2); mainLayout-addWidget(clearAllButton, 1, 4,1,2); for (int i = 1; i addWidget(digitButtonsi, row, column); /在网格布局中添加控件 mainLayout-addWidget(digitButtons0, 5, 1); mainLayout-addWidget(pointButton, 5, 2); mainLayout-addWidget(divisionButton, 2, 4); mainLayout-addWidget(timesButton, 3, 4); mainLayout-addWidget(minusButton, 4, 4); mainLayout-addWidget(plusButton, 5, 3); mainLayout-addWidget(equalButton, 5, 4); setLayout(mainLayout); setWindowTitle(tr(Calculator);/实现这些槽函数void Calculator:digitClicked() Button *clickedButton = qobject_cast(sender(); int digitValue = clickedButton-text().toInt(); if (display-text() = 0 & digitValue = 0.0) return; if (waitingForOperand) display-clear(); waitingForOperand = false; display-setText(display-text() + QString:number(digitValue);void Calculator:additiveOperatorClicked() Button *clickedButton = qobject_cast(sender(); QString clickedOperator = clickedButton-text(); double operand = display-text().toDouble(); if (!pendingMultiplicativeOperator.isEmpty() if (!calculate(operand, pendingMultiplicativeOperator) abortOperation(); return; display-setText(QString:number(factorSoFar); operand = factorSoFar; factorSoFar = 0.0; pendingMultiplicativeOperator.clear(); if (!pendingAdditiveOperator.isEmpty() if (!calculate(operand, pendingAdditiveOperator) abortOperation(); return; display-setText(QString:number(sumSoFar); else sumSoFar = operand; pendingAdditiveOperator = clickedOperator; waitingForOperand = true;void Calculator:multiplicativeOperatorClicked() Button *clickedButton = qobject_cast(sender(); QString clickedOperator = clickedButton-text(); double operand = display-text().toDouble(); if (!pendingMultiplicativeOperator.isEmpty() if (!calculate(operand, pendingMultiplicativeOperator) abortOperation(); return; display-setText(QString:number(factorSoFar); else factorSoFar = operand; pendingMultiplicativeOperator = clickedOperator; waitingForOperand = true;void Calculator:equalClicked() double operand = display-text().toDouble(); if (!pendingMultiplicativeOperator.isEmpty() if (!calculate(operand, pendingMultiplicativeOperator) abortOperation(); return; operand = factorSoFar; factorSoFar = 0.0; pendingMultiplicativeOperator.clear(); if (!pendingAdditiveOperator.isEmpty() if (!calculate(operand, pendingAdditiveOperator) abortOperation(); return; pendingAdditiveOperator.clear(); else sumSoFar = operand; display-setText(QString:number(sumSoFar); sumSoFar = 0.0; waitingForOperand = true;void Calculator:pointClicked() if (waitingForOperand) display-setText(0); if (!display-text().contains(.) display-setText(display-text() + tr(.); waitingForOperand = false;void Calculator:backspaceClicked() if (waitingForOperand) return; QString text = display-text(); text.chop(1); if (text.isEmpty() text = 0; waitingForOperand = true; display-setText(text);void Calculator:clear() if (waitingForOperand) return; display-setText(0); waitingForOperand = true;void Calculator:clearAll() sumSoFar = 0.0; factorSoFar = 0.0; pendingAdditiveOperator.clear(); pendingMultiplicativeOperator.clear(); display-setText(0); waitingForOperand = true;/定义createButton函数 需要字符串参数 和 一个 字符指针/在此函数内连接信号与槽Button *Calculator:createButton(const QString &text, const char *member) Button *button = new Button(text); connect(button, SIGNAL(clicked(), this, member); return button;void Calculator:abortOperation() clearAll(); display-setText(tr(#);bool Calculator:calculate(double rightOperand, const QString &pendingOperator) if (pendingOperator = tr(+) sumSoFar += rightOperand; else if (pendingOperator = tr(-) sumSoFar -= rightOperand; else if (pendingOperator = tr(327) factorSoFar *= rightOperand; else if (pendingOperator = tr(367) if (rightOperand = 0.0) return false; factorSoFar /= rightOperand; return true;2 程序实现;1、对于界面设计 采用的网格布局作为主布局,然后使用其addWidget函数添加部件,最后实现了基本的简易计算机的界面界面如图所示:2.首先输入相应的要求输入的数据。在界面上,点击相应的按钮,信号会随着点击传递到相应的槽函数中,并实现函数的功能,经过处理得到相应的结果。并能够将结果输出。下面依次介绍按钮及所连接的槽函数相应的连接信号语句:Button *clearAllButton = createButton(tr(clearAll), SLOT(clearAll(); /用createButton函数定义除法按钮并且与除法槽函数建立 Button *divisionButton = createButton(tr(367), SLOT(multiplicativeOperatorClicked(); /定义乘法按钮 Button *timesButton = createButton(tr(327), SLOT(multiplicativeOperatorClicked(); /定义减法按钮 Button *minusButton = createButton(tr(-), SLOT(additiveOperatorClicked(); /定义加法按钮 Button *plusButton = createButton(tr(+), SLOT(additiveOperatorClicked(); /定义等号按钮Button *equalButton = createButton(tr(=), SLOT(equalClicked(); /实现代码 如下createButton函数为自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业产业集群农业科技成果转化与推广策略报告
- 行政事业单位预算编制指南
- 建筑方案设计部门职责分工
- 2024-2025学年高中物理 第3章 磁场 习题课4 带电粒子在磁场或复合场中的运动说课稿 粤教版选修3-1
- 镁冶炼废弃物处理与再利用分析报告
- 海水养殖鲽鱼创新创业项目商业计划书
- 灌排泵站运行工三级安全教育(车间级)考核试卷及答案
- 摄影器材企业人才策略研究
- 橡胶带在户外广告牌固定材料中的耐风性能
- 木片玩具安全规范解读
- 2024年公司内部审计制度例文(四篇)
- 江苏省江阴市河塘中学2024-2025学年七年级上学期10月阶级段性练习语文试题
- 小学英语词汇量小学英语词汇大全(约1000词)(按字母顺序)修改版
- 2024年道路交通(驾驶员交通法规及安全)知识考试题库与答案
- 2024年全国职业院校技能大赛中职(数字产品检测与维护赛项)考试题库(含答案)
- 【乡村旅游探究的文献综述4200字】
- 2025年上半年教师资格考试高中历史学科知识与教学能力试卷与参考答案
- 城市供热管网抢修与维护工程技术规程
- DB2104∕T 0011-2022 地理标志产品 清原龙胆
- 《电动汽车双向无线电能传输系统技术规范》
- 医院护理培训课件:《安全注射》
评论
0/150
提交评论