C++课程设计:桌面时钟设计与实现.docx_第1页
C++课程设计:桌面时钟设计与实现.docx_第2页
C++课程设计:桌面时钟设计与实现.docx_第3页
C++课程设计:桌面时钟设计与实现.docx_第4页
C++课程设计:桌面时钟设计与实现.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:桌面时钟设计与实现 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2015 年 1 月 10 日1 系统需求分析1 实现圆盘时钟的绘制。2实现电子时钟类的设计。3实现日历类的设计。4实现主窗口的布局与设计工作。5实现主窗口与时钟和日历的链接效果。6美化界面2 总体设计(1)、各部件功能简介1.日历类:主要是将日历显示出来,然后添加了一个小按钮回到今天,用来方便用户在浏览日历前后再返回到当前月所在的页面。2.电子时钟类:主要是通过UI界面的设计与代码加以控制,实现在对话框中显示当前时间和上午或下午。3.圆盘时钟类:通过使用画笔和画刷,然后绘制时钟的时针、分针和秒针。4.主窗口类:主要用来实现将以上三个类实现的功能,利用GroupBox和Layout合理的布局,然后在美化界面。(2)、整体模块划分框图电子时钟Digitalclock图3-1 整体模块划分桌面时钟日历Calendar圆盘时钟Analogclock主窗口设计Deskclock 3 详细设计 /*我负责日历类的实现,主窗口界面的实现和美化界面。*/(1)、Calendar类Calendar类具体介绍 Calendar类中继承了QT中的QWidget,主要包含构造函数Calendar(),createCalendarGroupBox()和槽函数showtoday()。1.Calendar()中,就是布局,将构建好的日历放在布局中。具体代码如下: Calendar:Calendar() createCalendarGroupBox();QGridLayout *layout=new QGridLayout; layout-addWidget(calendarGroupBox,0,0); layout-setSizeConstraint(QLayout:SetFixedSize); setLayout(layout);2.createCalendarGroupBox()中运用GroupBox和GridLayout创建表格,将日历添加进来,然后增添了一个回答今天的按钮,利用信号与槽机制,实现其功能。具体代码如下: void Calendar:createCalendarGroupBox() calendar=new QCalendarWidget; calendar-setGridVisible(true); calendarGroupBox=new QGroupBox; previewLayout=new QGridLayout;previewLayout-addWidget(calendar,0,0,Qt:AlignCenter);/按钮功能的实现QPushButton *btn1=new QPushButton(tr(回到今天); previewLayout-addWidget(btn1,1,0,Qt:AlignRight); connect(btn1,SIGNAL(clicked(),this,SLOT(showtoday(); calendarGroupBox-setLayout(previewLayout);3槽函数showtoday(),就是直接调用了QCalendarWidget中的showToday()函数,利用QCalendarWidget类定义一个指针,然后直接调用就可以实现。.Calendar类UML图Calendar-calendarGroupBox:QGroupBox*-previewLayout:QGridLayout*-calendar:QCalendarWidget*+Calendar()+createCalendarGroupBox()图4-1 日历类+showtoday()(2)、主窗口设计Deskclock类.Deskclock类具体介绍Deskclock类,也是继承了QT中的基类QWidget,其中主要用到了Layout和GroupBox来布局管理,利用信号与槽机制实现窗口的连接,通过添加图片资源,利用QPalette来美化界面。1.Deskclock()中,主要运用了GroupBox来将日历,时间和两个时钟布局在窗口中,以及美化界面即添加背景图片。Deskclock:Deskclock(QWidget *parent) : QWidget(parent) QGridLayout *layout=new QGridLayout; layout-addWidget(todayGroupBox,0,0); layout-addWidget(CalendarGroupBox,1,0); layout-addWidget(datesGroupBox, 2,0 ); layout-setSizeConstraint(QLayout:SetFixedSize); setLayout(layout);/添加背景图片 this-setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette:Background, QBrush(QPixmap(:files/backgrounds.jpg); this-setPalette(palette); 2.creatTodayGroupBox()函数中,首先调用currentTime()和currentDate()函数来获取当前时间和日期,然后利用QString将其转换为字符串并将其打印在QLabel定义的标签上,使他显示出来,利用QFont和QPalette改变字体和颜色。void Deskclock:createTodayGroupBox() todayGroupBox=new QGroupBox(tr(Today); QTime time=QTime:currentTime(); QDate date=QDate:currentDate(); QString text1=date.toString(tr(yyyy年MM月dd日 dddd); QString text2=time.toString(tr( hh:mm:ss); QLabel *label1=new QLabel(text1); QLabel *label2=new QLabel(text2); QHBoxLayout *datelayout=new QHBoxLayout; datelayout-addWidget(label1); datelayout-addWidget(label2); todayGroupBox-setLayout(datelayout); 3.createClockGroupBox()中主要设置了两个按钮,然后利用信号与槽机制实现了与电子时钟和圆盘时钟的连接,其中两个槽函数都是自己编写的。void Deskclock:createClockGroupBox() clockGroupBox = new QGroupBox(tr(Clock); QPushButton *digitalbtn=new QPushButton(电子时钟); QPushButton *analogbtn=new QPushButton(圆盘时钟); connect(digitalbtn,SIGNAL(clicked(),this,SLOT(displaydigitalclock(); connect(analogbtn,SIGNAL(clicked(),this,SLOT(displayanalogclock(); .Deskclock类UML图Deskclock-Dclock:digitalclock*-Aclock:AnalogClock*-calendar:Calendar*-CalendarGroupBox:QGroupBox*-CalendarLayout:QGridLayout*-clockGroupBox:QGroupBox*-todayGroupBox:QGroupBox*+Deskclock()+createCalendarGroupBox()+createClockGroupBox()+createTodayGroupBox()+displayanalogclock()+displaydigitalclock()+Deskclock()图4-2 主窗口类图 4 系统调试 (1)、日历部分的调试图5-1-1 刚开始只是实现了将日历放在GroupBox里,然后本想实现生日的记录,但经过尝试,没有成功,然后就只是简单的加了一个回到今天的按钮。其实在日历的部分,功能确实不够完善,但由于只是初次接触QT,只能边学边做,所以没有实现更多的功能。图5-1-2(2)、主窗口的调试 图5-2-1刚开始实现了这样布局之后,点击按钮电子时钟和圆盘时钟都无法显示出来,然后发现是槽函数编写的有问题,经过老师和同学的帮助,便实现了这一功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论