资源描述:
《c++课程设计:桌面时钟设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:面向对象程序设计C++设计题目:桌面时钟设计与实现专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015年1月10日一.系统需求分析1实现圆盘时钟的绘制。2实现电子时钟类的设计。3实现日历类的设计。4实现主窗口的布局与设计工作。5实现主窗口与时钟和日历的链接效果。6美化界面二.总体设计(1)、各部件功能简介1.日历类:主要是将日历显示出来,然后添加了一个小按钮回到今天,用来方便用户在浏览日历前后再返回到当前月所在的页面。2.电子时钟类:主要是通过UI界面的设计与代码加以控制,实现在对话框中显示当前时间和上午或下午。3.圆盘时钟类:
2、通过使用画笔和画刷,然后绘制时钟的时针、分针和秒针。4.主窗口类:主要用来实现将以上三个类实现的功能,利用GroupBox和Layout合理的布局,然后在美化界面。(2)、整体模块划分框图电子时钟Digitalclock图3-1整体模块划分桌面时钟日历Calendar圆盘时钟Analogclock主窗口设计Deskclock一.详细设计/*我负责日历类的实现,主窗口界面的实现和美化界面。*/(1)、Calendar类①.Calendar类具体介绍Calendar类中继承了QT中的QWidget,主要包含构造函数Calendar(),createCalend
3、arGroupBox()和槽函数showtoday()。1.Calendar()中,就是布局,将构建好的日历放在布局中。具体代码如下:Calendar::Calendar(){createCalendarGroupBox();QGridLayout*layout=newQGridLayout;layout->addWidget(calendarGroupBox,0,0);layout->setSizeConstraint(QLayout::SetFixedSize);setLayout(layout);}2.createCalendarGroupBox()
4、中运用GroupBox和GridLayout创建表格,将日历添加进来,然后增添了一个回答今天的按钮,利用信号与槽机制,实现其功能。具体代码如下:voidCalendar::createCalendarGroupBox(){calendar=newQCalendarWidget;calendar->setGridVisible(true);calendarGroupBox=newQGroupBox;previewLayout=newQGridLayout;previewLayout->addWidget(calendar,0,0,Qt::AlignCente
5、r);//按钮功能的实现QPushButton*btn1=newQPushButton(tr("回到今天"));previewLayout->addWidget(btn1,1,0,Qt::AlignRight);connect(btn1,SIGNAL(clicked()),this,SLOT(showtoday()));calendarGroupBox->setLayout(previewLayout);}3.槽函数showtoday(),就是直接调用了QCalendarWidget中的showToday()函数,利用QCalendarWidget类定义一
6、个指针,然后直接调用就可以实现。②.Calendar类UML图Calendar-calendarGroupBox:QGroupBox*-previewLayout:QGridLayout*-calendar:QCalendarWidget*+Calendar()+createCalendarGroupBox()图4-1日历类+showtoday()(2)、主窗口设计Deskclock类①.Deskclock类具体介绍Deskclock类,也是继承了QT中的基类QWidget,其中主要用到了Layout和GroupBox来布局管理,利用信号与槽机制实现窗口的
7、连接,通过添加图片资源,利用QPalette来美化界面。1.Deskclock()中,主要运用了GroupBox来将日历,时间和两个时钟布局在窗口中,以及美化界面即添加背景图片。Deskclock::Deskclock(QWidget*parent):QWidget(parent){……QGridLayout*layout=newQGridLayout;layout->addWidget(todayGroupBox,0,0);layout->addWidget(CalendarGroupBox,1,0);layout->addWidget(datesGro
8、upBox,2,0);layout->setSizeConstra