



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、_桌面时钟设计与实现实习报告 xx大学信息工程学院 桌面时钟设计与实现实习报告 桌面时钟设计与实现 学 号 姓 名 专业班级 指导教师 实践日期 2021年1月6日-2021年1月17日 目 录 一、综合训练目的与要求 1 二、综合训练任务 1 (1)需求分析 1 (2)任务 1 三、总体设计 2 (1)主要模块划分 2 (2)模块说明 2 四、详细设计说明 3 (1)类图 3 (2)设计说明 3 (3)具体类说明 3 calender类 3 mainclock类 4 main类 4 五、调试与测试 4 (1)第一次调试 4 (2)第二次调试 5 (3)第三次调试 6 (4)第四次调试 7 (
2、5)最后调试 8 六、实习日志 10 七、实习总结 12 八、附录:核心代码清单 13 (1)日历部分代码 13 (2)圆盘时钟部分代码 14 (3)电子时钟部分代码 17 (4)总体布局部分代码 19 (5)主函数部分代码 21 一、综合训练目的与要求 本次面向对象编程实践是学习了c+面向对象程序设计之后进行的必要的实践性环节。由于各种原因,信息管理与信息系统专业是在学习了一年之后才安排了这个实习,因为就在考试周,任务有点繁重。本课综合训练的目的和任务: #ifndef calendar_h #define calendar_h #include qwidget /对类的指针进行声明,没有实
3、例化 qt_begin_namespace class qcalendarwidget; class qgridlayout; class qgroupbox; qt_end_namespace class calendar : public qwidget q_object /宏,只有加入了该宏,才能使用qt中的single和slot机制 public: calendar(); /声明日历的构造函数 private: void createpreviewgroupbox(); /声明创建预览日历框中的函数 qgroupbox *previewgroupbox; /qgroupbox窗口部件提
4、供了一个有标题的组合框 qgridlayout *previewlayout; /qgridlayout表格布局 qcalendarwidget *calendar; /qcalendarwidget提供了基于月份的日历,使得用户可以选择当前日期 ; #endif / calendar_h calendar.cpp: #include “calendar.h“ #include qtgui #include qtwidgets /*日历的构造函数*/ calendar:calendar() createpreviewgroupbox(); /创建一个日历表格 qgridlayout *layo
5、ut = new qgridlayout; /新建一个表格布局的对象 layout-addwidget(previewgroupbox); /把日历表格添加到表格布局中 layout-setsizeconstraint(qlayout:setfixedsize); /固定表格布局尺寸不变 setlayout(layout); /设置布局 /*创建日历表格*/ void calendar:createpreviewgroupbox() calendar = new qcalendarwidget; /获得一个日历对象 calendar-setgridvisible(true); /显示日历表格中
6、的表格线 /新建一个qgroupbox窗口部件,标题为“日历查阅” previewgroupbox = new qgroupbox(tr(“日历查阅“); previewlayout = new qgridlayout; /新建一个表格布局 /previewlayout-addwidget(calendar, 0, 0, qt:alignright); previewlayout-addwidget(calendar, 0, 0, qt:aligncenter); /把日历对象放入到坐标(0,0)处,并居中对齐 /用setlayout方法把带有日历的表格布局添加到窗口部件“日历查询”分组框中
7、previewgroupbox-setlayout(previewlayout); (2)圆盘时钟部分代码 clock.h #ifndef clock_h #define clock_h #include qwidget class clock : public qwidget q_object public: int hour; int minute; int second; clock(qwidget *parent=0); virtual clock(); private: void paintevent(qpaintevent *event); ; #endif / clock_h c
8、lock.cpp #include qtgui #include qtglobal #include “clock.h“ #include qimage #include qpainter clock:clock(qwidget *parent): qwidget(parent) qtimer *time=new qtimer();/定义定时器 connect(time,signal(timeout(),this,slot(update();/信号和槽 time-start(1000);/刷新周期为1s clock:clock() void clock:paintevent(qpainteve
9、nt *event) int size =qmin(width(),height();/获取窗口最小长度 qtime t=qtime:currenttime();/获取当前系统时间 qpainter paint(this); /定义指针颜色 qcolor hourcolor(127,0,127); qcolor minutecolor(0, 127, 127, 191); qcolor secondcolor(0,0,0); clock myclock; myclock.hour=t.hour(); myclock.minute=t.minute(); myclock.second=t.sec
10、ond(); paint.setrenderhint(qpainter:antialiasing);/去掉锯齿,使边缘平滑 paint.translate(width()/2,height()/2);/设置原点坐标位置 paint.scale(size/200,size/200);/设置缩放比例 /定义时针形状 static const qpoint hourhand4 = qpoint(5, 0), qpoint(0,9), qpoint(-5, 0), qpoint(0, -50), ; /刻画时针 paint.setpen(qt:nopen);/设置画笔颜色 paint.setbrush
11、(hourcolor);/设置画刷颜色(即填充色) paint.save(); paint.rotate(30.0 * (myclock.hour+ myclock.minute / 60.0);/设置每次刷新时时针转动角度 paint.drawconvexpolygon(hourhand,4);/刻画时针 paint.restore(); /定义分针形状 static const qpoint minutehand4 = qpoint(5, 0), qpoint(0,9), qpoint(-5, 0), qpoint(0, -70), ; /刻画分针 paint.setpen(qt:nope
12、n); paint.setbrush(minutecolor); paint.save(); paint.rotate(6.0 * (myclock.minute+ myclock.second / 60.0); paint.drawconvexpolygon(minutehand,4); paint.restore(); /定义秒针形状 static const qpoint secondhand4= qpoint(4,0), qpoint(0, 9), qpoint(-4,0), qpoint(0,-90), ; /刻画秒针 paint.setpen(qt:nopen); paint.se
13、tbrush(secondcolor); paint.save(); paint.rotate(6.0*(myclock.second); paint.drawconvexpolygon(secondhand,4); paint.restore(); /定义时点刻度形状 static const qpoint hournode4= qpoint(0,98), qpoint(0,92), qpoint(-3,95), qpoint(3,95), ; /刻画表盘 paint.setpen(hourcolor); paint.setbrush(hourcolor); for (int i = 0;
14、i 12; +i) /paint.drawline(88, 0, 96, 0); paint.drawconvexpolygon(hournode,4); paint.rotate(30.0); paint.setpen(minutecolor); for (int j = 0; j 60; +j) if (j % 5) != 0) paint.drawline(92, 0, 96, 0); paint.rotate(6.0); (3)电子时钟部分代码 digitaiclock.h /*定义电子表头文件*/ #ifndef digitalclock_h #define digitalclock
15、_h #include qtgui #include qdialog #include qlcdnumber #include qtimer class digitalclock : public qlcdnumber q_object public: digitalclock(qwidget *parent = 0); private slots: void showtime(); private: bool showcolon;/标志变量 ; #endif / digitalclock_h digitaiclock.cpp #include “digitalclock.h“ #includ
16、e qtime #include qlcdnumber digitalclock:digitalclock(qwidget *parent):qlcdnumber(parent) this-setdigitcount(8);/设置输出显示为8位,默认为5位 /this-setnumdigits(8); qtimer *timer=new qtimer(); connect(timer,signal(timeout(),this,slot(showtime(); timer-start(1000); showcolon=true; void digitalclock:showtime() qti
17、me time=qtime:currenttime(); qstring strtime; if(showcolon) strtime=time.tostring(“hh:mm:ss“); showcolon=false; else strtime=time.tostring(“hh mm ss“); showcolon=true; display(strtime); (4)总体布局部分代码 mainclock.h #ifndef mainclock_h #define mainclock_h #include qwidget class mainclock: public qwidget q
18、_object public: mainclock(qwidget *parent = 0); ; #endif / mainclock_h mainclock.cpp #include “mainclock.h“ #include “clock.h“ #include “digitalclock.h“ #include “calendar.h“ #include qgroupbox #include qlabel #include qboxlayout #include qtextcodec #include qdate #include qtwidgets mainclock:maincl
19、ock(qwidget *parent): qwidget(parent) this-setwindowtitle(“桌面时钟“); /this-setwindowtitle(qstring:fromlocal8bit(“桌面时钟“); /有些qt版本需转换编码 qdate date = qdate:currentdate(); /获取当前时间 qstring text1 = date.tostring(tr(“ yyyy年mm月dd日“); /获得指定格式日期 qstring text2 = date.tostring(tr(“ dddd“); /获得指定格式星期几 /*显示时钟表*/ cl
20、ock *clock=new clock; /定义时钟表对象 qgroupbox *groupbox1=new qgroupbox(tr(“时钟表“); /新建“时钟表”分组框 qvboxlayout *layout1=new qvboxlayout ; /新建垂直布局管理器 layout1-addwidget(clock); /把时钟表对象加入垂直布局管理器中 groupbox1-setlayout(layout1); /把垂直布局管理器加入“时钟表”分组框中 qfont font1 = groupbox1-font();/获得“时钟表”分组框标题的字体对象 font1.setpointsi
21、ze(12); /设置字体大小为12 font1.setbold(true); /设置字体加粗 groupbox1-setfont(font1); /把分组框标题改为设置后font对象 /*显示当前日期*/ qlabel *label1=new qlabel(text1) ; /新建标签类(当前日期“年月日”) qlabel *label2=new qlabel(text2) ; /新建标签类(“星期几”) qgroupbox *groupbox2=new qgroupbox(tr(“今天是“); /新建当前日期“今天是“分组框 qvboxlayout *layout2=new qvboxla
22、yout ; /新建垂直布局管理器 layout2-addwidget(label1); /把标签类加入垂直布局管理器 layout2-addwidget(label2); groupbox2-setlayout(layout2); /把垂直布局管理器layout2加入“今天是”分组框中 qfont font4 = groupbox2-font(); /设置“今天是”分组框标题样式 font4.setpointsize(12); font4.setbold(true); groupbox2-setfont(font4); qfont font2 = label1-font(); /*设置当前日
23、期显示样式*/ font2.setpointsize(24); font2.setbold(true); label1-setfont(font2); qpalette palette1; /定义调色板 palette1.setcolor(qpalette:windowtext,qt:red); /指定颜色为红色 label1-setpalette(palette1); /把指定调色板颜色应用于标签1(“年月日”) qfont font3 = label2-font(); /*设置星期显示样式*/ font3.setpointsize(24); font3.setbold(true); label2-setfont(font3); qpalette palette2; palette2.setcolor(qpalette:windowtext,qt:red); label2-setpalette(palette2); /*显示电子时钟*/ digitalclock *digitalclock=new digitalclock ; /定义电子表对象 qvboxlayout *layout3=new qvboxlayout ; /新建垂直布局管理器layout3 layout3-addwidget
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南召县2025届数学四年级第二学期期末检测模拟试题含解析
- 资产配置一线实战课程知到课后答案智慧树章节测试答案2025年春上海财经大学
- 南通大学《现代生物仪器分析》2023-2024学年第二学期期末试卷
- 山西大同市第一中学2025年高三下学期学业质量监测(二模)英语试题含解析
- 厦门演艺职业学院《绿色建筑与绿色施工》2023-2024学年第二学期期末试卷
- 韩山师范学院《建设监理1》2023-2024学年第二学期期末试卷
- 安徽省滁州市部分高中2025年高三第一次联考试卷(英语试题文)试题含解析
- 广州华立科技职业学院《日语综合能力训练(2)》2023-2024学年第一学期期末试卷
- 古诗表达技巧
- 公共交通乘客服务评价制度
- 质量验厂报告
- 肝门胆管恶性肿瘤的护理查房
- 地摊膏药推广方案策划
- 元宵节介绍-元宵节
- 校企合作模式下的高职院校人才培养研究
- GJB24891995航空机载设备履历本及产品合格证编制要求
- 马克思主义劳动观的内涵
- 运动时的准备活动和整理活动
- 建筑垃圾处理及清运方案
- 流浪犬收容管理服务方案
- 电阻星形连接与三角形连接的等效变换
评论
0/150
提交评论