画图板的设计与实现学士学位论文.doc

上传人:教**** 文档编号:88951271 上传时间:2023-05-04 格式:DOC 页数:59 大小:2.61MB
返回 下载 相关 举报
画图板的设计与实现学士学位论文.doc_第1页
第1页 / 共59页
画图板的设计与实现学士学位论文.doc_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《画图板的设计与实现学士学位论文.doc》由会员分享,可在线阅读,更多相关《画图板的设计与实现学士学位论文.doc(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 北京邮电大学毕业设计北京邮电大学毕业设计(论文)任务书第1页毕业设计(论文)题目:画图板的设计与实现毕业设计(论文)要求及原始数据(资料):1深入了解linux下的qt creator的相关技术;2熟悉使用qt布局管理器的相关技术;3熟练掌握qt UI编辑界面的应用,训练编写程序的能力;4深入分析qt中的信号和槽函数的机制;5设计并实现qt下的画图板的基本功能;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。第2页 毕业设计(论文)主要内容:1、 Qt的介绍与具体应用;2、 QT中的信号和槽函数的机制;3、 画图板功能设计;4、 画图板界面设计;5、 画图板涂鸦功

2、能实现;6、 画图板绘制基本图形的实现;7、 实现编辑菜单功能;学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页 主要参考文献(资料):1陈英,梁建武.Linux基础及应用教程.水利水电出版社,2008,29422倪继利. Qt以及linux操作系统窗口设计.电子工业出版社,2006,45152 3Blakowski G,Steinmetz R.A media synchronization survey:reference model,specification,and cas

3、e studiesJ.IEEE Journal Selected Areas in Communications,1996,14(1):5-354金西,黄汪.嵌入式Linux技术及其应用.计算机应用,2000,20(7):565刘峥嵘.嵌入式Linux应用开发详解.机械工业出版社,2004,53686林锐,韩永泉.高质量程序设计指南:C+、C语言.电子工业出版社,2007,1241557Jonathan Corbet,Alessandro Rubini,Greg Koah -Hartman.Linux Device Driver.Jan 20058钱能.C+程序设计教程.清华大学出版社,200

4、6,56889任善全,吕强,钱培德等.一个基于QtEmbedded的嵌入式Linux应用程序的实现,计算机应用与软件,2006,210ISO/IEC JTC1/SC29/WG11.IS14496:Generic coding of moving pictures and associated audio information(MPEG-4).ISO/IEC,2000:101511谭浩强.C+面向对象程序设计.清华大学出版社,2006,8910012王子强,刘海燕,李媛州.Linux下图形用户界面程序的开发与实现,计算机应用与软件,2005专业班级软件1025班学生南茜要求设计(论文)工作起止

5、日期2014年3月17日2014年6月27日指导教师签字日期2014年3月17日教研室主任审查签字日期系主任批准签字日期画图板的设计与实现摘 要本文的主要内容是记述同题课程设计中的一些关键技术和辅助文档。本文的目标是设计一款基于Qt编程语言的简易画图板,使其具有涂鸦,绘制基本图形等功能。本程序具有一定的实用意义和价值。功能分装良好可以方便的根据需求进行扩充。本文运用材料综述的方法,首先记述了编程环境的搭建,介绍了Qt的优点,Qt编码规范和Qt的双缓冲机制在绘图中的运用。着重分析了Qt在软件开发中的编程机制,并根据应用特点进行了设计的构件与算法的需求分析。其次在需求分析中给出是可行性分析,然后放

6、入功能分析图和流程图帮助梳理设计思路。最后在详细设计阶段完成编码,实现程序功能,得到一个功能健全的画图板应用程序。在本文中将设计并实现画图板的一些基本功能,例如:新建,打开,保存,清空,放大,缩小,还原,基本图形绘制,转换画笔颜色等功能。最后运行结果符合设计要求,方案可行。经过测试后程序功能实现良好。关键词 嵌入式Linux QT;图形用户界面;电子画板;双缓冲机制i The Realization of Drawing Board Function Abstract The main content of this paper is described with the course in

7、the design of some key technologies and supporting documents.The goal of this article is to design a simple drawing board based on Qt programming language, make its have graffiti, draw up the basic graph, and other functions.This program has a certain practical significance and value.Function accord

8、ing to the requirements of good packaging can easily expanded. This article applies the method of material review, the construction of the first describes the programming environment, this paper introduces the advantages of Qt Qt code conventions and Qt double-buffering mechanism used in the drawing

9、.Qt programming in the software development mechanism is analyzed emphatically, and the design based on the application of artifacts and requirements analysis of the algorithm.Second is feasibility analysis is given in the requirements analysis, and then into the comb function analysis diagram and f

10、lowchart to help design thinking.Program is realized by encoding the detailed design phase is complete, the function, get a functioning drawing board application. Designed and implemented in this paper some basic function of drawing board, for example: the new, open, save, empty, enlarge, shrink, re

11、duction, basic graphics rendering, convert the brush color, and other functions.Finally run results conform to the requirements of the design, the scheme is feasible.Program function is good.Key words Linux QT ; graphical user interface (GUI); electronic drawing board; double buffering mechanismii目

12、录摘 要iAbstractii1 引言11.1 研究背景11.2 研究的目的和意义21.3 程序设计的环境选择22 画图板设计的技术背景32.1 Qt的主要特征32.2 QT creator简介32.3 Qt creator环境搭建42.4 QT编程机制信号与槽机制简介52.5 Qt编码规范72.6 GDI绘图理论基础92.7 双缓冲机制92.8 双缓冲技术绘图103 画图板项目需求分析123.1 可行性研究123.1.1 经济可行性123.1.2 技术可行性123.1.3 运行可行性123.1.4 时间可行性123.1.5 法律可行性123.2 功能分析133.3 系统用例分133.4 性能

13、需求133.4.1 应用需求分析143.4.2 运行需求分析143.4.3 其他需求分析144 画图板概要设计154.1 画图板功能模块关系与划分154.2 画图板总体设计流程图165 画图板详细设计175.1 画图板界面设计185.1.1 画图板的界面元素声明185.1.2 图板界面布局实现195.2 画图板功能详细设计205.2.1 画图板的文件编辑功能实现205.2.2 画图板的图片编辑功能实现235.3 画图板绘图功能实现265.3.1 绘图板的基本图形绘制功能实现265.3.2 绘图板自由绘图功能实现305.3.3 画图板画图辅助选项实现336 画图板程序测试356.1 测试的重要性

14、及目的356.2 测试的方法366.3 测试用例366.4 测试结果36结 论38参考文献39致谢40外文原文41中文翻译491 引言随着操作系统不断的更新换代,其自带的画图板界面及功能也是不断变化着,像是xp、vista、win7,它们的画图板的界面布局风格以及功能都有所不同。这表明尽管是简简单单的一个操作系统自带画图板,系统设计人员也没有停止对它的不断研与探索, 他们在不断寻找着更人性化、更能满足大众需求的改变。随着社会的不管发展以及计算机的不断普及,人们对画画的要求越高,对绘图系统也提出了更高更全面的要求。许多用户由于自身的画图习惯或者是视觉效果不同,对传统的画图工具可能感觉不是特别满意

15、。就像孩子总是喜欢画可爱型,而成人则画实用的。不同年龄不同身份的人,需求不同。综合上述,为了尽量让所有人满意,在此我设计一个大概的程序模型,让别人来试试我的绘图系统。对自从上世纪计算机系统向绘画界的延伸以来,绘图技术已成为计算机系统不可分割的一部分。而图形编辑器又是图形编辑软件的基础,几乎所有的图形编辑软件,都是在拥有基本图形编辑功能的基础上实现更复杂功能的。故在图形应用非常广泛的今天,研究开发绘图系统是非常有意义的。在绘图方面实现绘制直线、矩形、圆形等基本功能,在界面设计方面实现了对图形的操作,从而从底层对绘图系统进行简单的实现。 与此同时,简单小巧的绘图记事功能软件的发展也在蓬勃向前。本软

16、件功能与Windows下附件中的画图软件有类似功能。绘制方面的实现功能包括图片的打开新建保存,画布的放大缩小,画笔功能实现,基本图形的绘制,绘图时可以选择各种颜色,各种线宽。软件支持保存和读取jpg格式的图形。本软件运用的是面向对象程序设计的思想。相对于面向过程的设计理念,面向对象的设计方法更适用于画图板的设计,它使画图板所涉及的各部分功能模块实现更好的封装。它的特色是。一方法的唯一性,即方法是对软件开发过程全过程进行综合考虑得到的。二是高度的独立性,对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。三是良好的可扩展性,相对独立的功能模块使得程序可以根

17、据需要进行相印的扩充或是缩减。1.1 研究背景 计算机绘图是相对于手工绘图而言的一种高效率、高质量的绘图技术。手工绘图使用三角板、丁字尺、圆 规等简单工具,是一项细致、复杂和冗长的劳动。不但效率低、质量差,而且周期长,不易于修改。计算机绘图的发展更加趋向于用户需求导向,在一些专业领域中计算机绘图发展迅猛,例如Photoshop、Adobe image 、AutoCAD等。多个程序的汇集,组成功能齐全、能够绘制基本地图图形和各类常用地图的程序组,称为绘图软件系统,或称为绘图软件包。绘图软件通常用高级算法语言编写,以子程序的方式表示,每个子程序具有某种独立的绘图功能。绘图软件包是绘图子程序的汇集,

18、可包括几十个至几百个子程序。用户根据需要,调用其中一部分子程序,绘制某种图形或一幅地图。1.2 研究的目的和意义日常生活中,有很多方面都会用到画图来解决阐述一些问题,这就需要借助计算机来进行简单的画图工作,此时就需要一个能简单解决这些问题的画图软件。本选题是设计一个简单的基于Qt creator的画图软件,能够完成一些简单的画图需求。现在比较经常使用的是windows系统下附带的画图软件,它基本上可以满足一些简单的画图需求。本设计就是按照这个画图软件的思想设计的,使画图软件能达到满足日常画图需求,便于存储编辑和展示,且要求功耗小且界面人性化,功能易扩展。1.3 程序设计的环境选择Qt类库大致可

19、以分为三个部分:控件,框架和工具。控件部分包括环境控件、主窗口控件、标准对话框、基本的G U I 控件、扩展 G U I控件 、G UI 组织控件以及帮助系统控件 。框架部分包括的是一些抽象的类,通常不可见,如对象模型、抽象控件、绘图、拖放、控件外观。工具部分包括时间日期和链表树等数据结构,它们和 GUI无关普通工具包括链表、堆栈 、队列 、树等常见数据结构,如QArray。图形处理工具控制图像的编码解码算法。如 QImagelO 。IO 控制工具处理 I,0 的一些类,如 QFile。时间和日期工具类处理时间和日期,如 QDate,QTime。在用 Qt 开发程序时,对于 G U I 的设计

20、有两种方法,一种是通过自己写代码来界面进行布局 ,但这就需要对 Ol有一定的熟练程度;另一种是通过 QtDesigner来设计界面,只需在ui文件来拖控件来布局就行了。对只需要用 Qt进行开发的程序员来说,后者显然比前者来的快。以下结合一个实例来介绍用 QtD esigner 来开发程序的 G U I,主窗口类从 Q W idget类派生,这样我们能方便地使用 Qt的 QM enubar类来添加菜单,并使用 Qt的控件类来摆放面板控件 ,整个程序以事件为驱动,通过 Qt的 signalslot机制与终端用户交互。设计好界面后,在程序编译后会生成一个 ui一 h 的头文件里面是一个U i一类,封

21、装了一些所拖放控件的变量名和一个比较重要的setupUI函数 ,是一些布局的代码。要用到这个界面是只需继承这个类就可以了,或者是包含这个 ui h 的头文件。设计类的主要思想是把所有的信号和槽放在构造函数里,程序是以事件为驱动,当产生一个信号时,会去调用相应的函数。2 画图板设计的技术背景2.1 Qt的主要特征Qt是Trolltech公司的产品,Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备,Trolltech公司网址:Qt是一个多平台的C+图形用户界面应用程序框架,

22、它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象,很容易进行扩展,并且允许真正的组件编程。1996年开始,Qt正式进入商业领域,它成为了全世界范围内数千种成功的应用程序的基础。Qt同时也是流行的Linux桌面环境KDE的基础,注:KDE是所有主要的Linux发行版的一个标准组件。 它具有以下优点: 1)优良的跨平台特性Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix,

23、FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。2)面向对象Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为信号与槽( signals/slots) 的安全类型来替代 callback,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效,这使得各个元件之间的协同工作变得十分简单。并且 QT是直接基于 Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。3)丰富的 APIQt包括多达250个以上的 C+ 类,还提供基于模板的 colle

24、ctions、serialization、 file、I/O device、 directory management、 date/time 类。甚至还包括正则表达式的处理功能。4)支持 2D/3D 图形渲染,支持 OpenGL5)大量的开发文档6)XML 支持2.2 QT creator简介Qt Creator是跨平台的 Qt 集成开发环境, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 具有良好的跨平台运行能力,支持的操作系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。Qt Creator

25、 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务Qt Creator 可以帮助 Qt 用户更加快速便利的运行项目,还可以提高有经验的 Qt 开发人员的工作效率,提高代码的可读性。其中使用强大的 C+ 代码编辑器可实现快速编写代码。语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。使用浏览工具管理源代码。集成了领先的版本控制软件,包括 Git、Perforce 和 Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换

26、。为 Qt跨平台开发人员的需求而量身定制。集成了特定于 Qt 的功能,如信号与槽 (Signals & Slots)图示调试器, 对 Qt 类结构可一目了然集成了 Qt Designer 可视化布局和格式构建器只需单击一下就可生成和运行 Qt 项目。2.3 Qt creator环境搭建 下载Qt源码包到本机,然后解压缩:下载qt-x11-free-3.2.1.tar.gz和qt-x11-opensource-src.tar.gz二进制包。2.在终端切换至qt-x11-free-3.2.1.tar.gz所在目录下,执行:tarzxvfqt-x11-free-3.2.1.tar.gz-C/usr/

27、local已同样的方法将qt-x11-opensource-src-.tar.gz源码包解压缩到/usr/local目录PS:(推荐解压缩至/usr/local目录,目录可以根据名称自己创建)进入用户主目录编辑该目录下的.bash_profile文件,并设置Qt环境变量,在这里我们以root用户以例。#vi/root/.bash_profile/打开root用户.bash_profile文件在root用户.bash_profile文件中设置环境变量,在此文件里面添加如下内容:QTDIR=/usr/local/qt-x11-free-3.2.1PATH=$QTDIR/bin:$PATHMANPA

28、TH=$QTDIR/doc/man:$MANPATHLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHexportQTDIRPATHMANPATHLD_LIBRARY_PATH添加完上面信息后按ESC键,“Shife+:”组合键回到vi编辑器命令行状态,输入wq!(强制保存退出)添加完环境变量后,使环境变量立即生效:#source/root/.bash_profile四、进入Qt解压缩的目录#cd$QTDIR或#cd/usr/local/qt-x11-free-3.2.1都可以,因为在/root/.bash_profile文件已经定义了环境变量QTDIR=/

29、usr/local/qt-x11-free-3.2.1和exportQTDIR。使用configure工具来构建Qt库和它提供的工具:./configure(./configure-help配置选择的列表。例:-thread选项来创建这个库的一个多纯种版本。)最后一步就要进入漫长的Qt安装编译时间了,有事的就出去办事吧,安装编译时间大约需要两个小时。编译命令:make安装命令:makeinstall。首先我们进入Linux的图形界面,打开一个控制终端(在桌面空间处单击鼠标右键,在弹出的单菜中选择“新建控制终端”。),在控制终端里面新建一个.cpp文件,并编写程序,如下:#viHelloWorl

30、d.cpp/建立一个HelloWorld.cpp文件#include#includeintmain(intargc,char*argv)QApplicationapp(argc,argv);QLabel*label=newQLabel(HelloWorld!,0);app.setMainWidget(label);label-show();returnapp.exec();写完上面的代码后保存退出(wq)vi编辑器。#qmake-project/把.cpp文件编译成.pro文件#qmake/通过.pro文件自动创建Makefile文件#make/编译,生成HelloWorld执行文件 图2-1

31、 Qt creator程序构件截图 2.4 QT编程机制信号与槽机制简介 信号/槽机制是QT区别于其它工具包的最有显著特征的部分。在GUI编程中,当一个widget改变,我们经常希望另外的widget被告知。更普遍地,我们希望任何的对象都可以互相通信。比如,如果用户点击close按钮,我们大多希望调用窗口的close()方法。以前的工具集通过callback来实现这种通信。callback是指向函数的指针,因此,若果你想让处理函数通知你某些事件,你可以传递给另一个函数一个指针来处理函数。处理函数在适当的时候调用callback。Callbacks有两种根本的缺陷:第一,它们不是类型安全的,我们

32、无法确定处理程序会调用正确参数的回调函数(callback)。第二,回调函数耦合于处理函数,因为处理函数必须知道去调用哪个回调函数。Qt提供了回调的替代技术:信号和槽。当特定事件发生时引发相应的信号。Qt的widget有许多预定义的信号,同时我们也可以为widget子类添加我们自定义的信号。槽是回应特定的信号时所调用的方法。Qt的窗口部件有许多预定义的槽,但是我们也可以为窗口部件的子类田间我们自定义的槽,以处理我们所感兴趣的信号。信号槽机制是类型安全的:信号的签名必须跟接受的槽的签名相匹配(事实上,槽的签名可以比信号的签名短,因为它可以忽略额外的字段)。因为签名是相容的,编译器就可以帮我们检测

33、类型的不匹配。信号和槽是松耦合的:一个类产生一个信号,并不知道而且不关心那个槽接受该信号。Qt的信号槽机制保证,如果你连接了一对信号槽,槽会在适当的时间带着信号的参数被调用。信号和槽可以附带任何类型任何数量的参数。信号和槽是完全类型安全的。槽可以用来接受信号,不过槽也是普通的成员函数。类似于对象不知道谁接受它的信号,槽也不知道是否有信号连接自己。这保证了Qt可以创建完全独立的组件。一个信号可以连接无数的槽,并且一个槽可以连接你想要连接的信号。甚至可以直接连接两个信号(当第一个信号产生,立即产生第二个信号)。信号和槽一起形成了一种强大的组件编程机制。QT的信号和槽的机制可以保证如果你把一个信号和

34、一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是QT特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用“标准的C+编

35、译器”678。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。 图2-2信号与槽机制示意图2.5 Qt编码规范第一条:尽量不要直接引用 QT 示例(或其它符合 GPL 协议的程序源代码)中源代码如果引用了Qt示例程序,请试图在内部使用不同的代码行来组织它。如果直接使用

36、了Qt的源代码文件,请保留位于文件首部的版权声明。如果您使用了别人编写的源代码,则需要取得相关的使用许可文书。但是如果你从建议中获得的仅仅是一些想法,而不是你实际上使用的代码,你也不需要文书。尽量不要对Qt的源代码进行修改,如果为了某重要需求而一定要对Qt源代码进行修改,那么一定要在源代码中修改的位置做详细的说明,并署名。另外还要书写详细的修改文档。 第二条:工程文件命名遵循的原则工程文件(.pro)命名采用:工程名.pro的方式.ptro文件中 HEARDERS 和 SOURCE行中如果有多个文件名(一般都会有的),则使用“”将他们隔开,并且使每一个文件名单独占一行。原则上文件名的先后顺序没

37、有限制,但是一般的惯例是将依赖性最小的文件写在最前面,工程的主程序(一般是 main.cpp)往往出现在 source的最后。一般将 TARGET行写在 HEARDERS 和 SOURCE的下面。下面是范例:HEADERS=HELLO.HSOURCE=HELLO.CPPmain.cppTARGET=hello工程中所有文件和目录命名中的字母一律使用小写,以保持在windows环境下的兼容性。第三条:函数注释三部分,功能、参数和返回值每个程序都应该以一段简短地、说明其功能的注释开头。请为每个函数书写注释以说明函数做了些什么。如果有参数和返回值,也需要对其进行解释。第四条:变量、定义等注释对于每个

38、静态变量和全局变量,请添加相应的注释语句。对于重要的变量、定义等进行注释。第五条:变量和函数的命名原则变量名或函数名中使用大写字符来区分各个部分,以便于记忆和阅读。全局(包括类中的)变量用长名字,局部变量用短名字。类成员变量前应加上 m_,全局变量加上 g_,仅与本模块有关的变量加上 l_。如果定义Qt类库中某种类型的变量,采用将类名中大写字母提取出并合并成小写的缩写字符串的方法(去掉第一个 Q),如:QLineEdit *m_leInputNum;QString *m_sName; 如果程序中出现了两个类名缩写一样的问题,如:QToolBar 和 QToolButton的缩写都是tb,这时应

39、将其中一个类的缩写进行变动,变动的准则以能够避免冲突,同时缩写能够表达类名为准。如这里可以将 QToolBar 的缩写为 tbar,QToolButton仍用 ,这样就可以避免命名冲突。声明自定义对象类型的变量采用同样的方法。局部变量应尽量易懂简洁,使用常见的变量,如Num,nCount,i,j,k,n,len,pos,offset,nReadNum,index,nRet,ret,string,filename临时变量,如 ltmp,ftmp,tmpStr,tempStr自定义信号以 sig_开头,自定义槽以slt_开头。Sig_和 slt_后面第一个单词(或其缩写)要以小写字母开头,第二个以

40、后的单词(或缩写)要以大写字母开头。如:sig_ mouseClicked(),slt_getMouseEvent()。另外,信号和槽的参数必须完全对应。在用connect 进行连接的时候,信号和槽中的参数可以只写参数类型。基本结构是数个以大写字母开头的单词。返回自定义private变量值的函数命名建议以get开头,如getLength()可以表示取回成员变量 m_nlength() 等;设置自定义private变量的函数命名建议以 set开头,如SetLength()可以表示设置成员变量 m_nlength()等。这样做是为了避免与Qt类中的函数名发生冲突。全局函数命名请以小写g开头。第六条

41、:自定义类的命名原则自定义类一般有两个文件,一个头文件,一 个实现体cpp。文件名采用被封装的类名,但是一律小写。如果一些结构或宏仅与本类有关,可在类头文件中定义。任何自定义类命名不要以Q开头,以免与 Qt 类库中的类混淆。(对自定义的类命名建议以大写字母 开头(MMCP),表达一定版权信息,并且在文件列表时自定义类会依次排在列表的前部)。如果需要自定义一个基类,请确保该基类的类名以base结束。工程的界面类一般从 QwigdetQMainWindowQDialog类继承,工程主界面类的命名采用“工程名MainWindow”方式,如:AChartMainWindow即表示Chart工程的主界面

42、类。主界面类往往在程序的开头(main函数)处构造,建议将构造主界面类的语句(main函数)放在 main.cpp中。对于一般的窗体,请在类名的最后体现窗体的类型,一般的方法是如果从Qwidget 继承而来,则以Widget结尾,如果从QMainWindow继承而来则以Window结尾,从QDialog继承而来,则以Dialog结尾。如果在自定义类中(从Qt某个类继承),如果覆盖了父类中某个函数,请在该函数的声明旁边注明。第七条:类声明体中的编排在类的声明体中,请按照:Q_OBJECT、public:signals:、slots:、protected:private:,的顺序将成员变量和函数进

43、行排列。如果需要在这个类(class)中声明某种数据类型(结构、枚举等),请将这个声明放在所有成员变量和成员函数的前面。如果在一种类型的声明中,即有成员变量,又有函数声明,请使用两个相同的类型声明将它们隔开,如:Private:Void function();Private:Int m_number;对一般的界面类,如果使用了信号槽,则 class声明的第一行必须是 Q_Object建议避免使用protected类型的成员函数或者成员变量,因为在Qt中,大量的事件处理函数(槽)均是以protected类型出现的。第九条:工程中目录的使用工程中的图片(建议以JPEG.PNG格式(避免使用gif)

44、,统一保存在“./pics”目录中。工程使用的汉化相关文件(.po和.qm)放在“./i18/”目录中。工程的临时交换目录请以宏的形式定义(建议使用“./temp/”),不要使用固定目录。另外,请不要使用“./temp/”目录名(这个目录名在Qt for windows的版本中有特殊意义)。第九条:界面布局原则制作 Qt界面的时候,请尽量使用布局管理器(QLayout)进行布局管理,避免使用绝对坐标,除非你能够绝对肯定这个界面的尺寸是完全不会变换的。如果某个区域出现了很多控件,在保证不会影响程序控制结构的前提下,请将这些控件放在一个可以包含其它窗口控件的盒子(如QWidget,QFrame,Q

45、GroupBox)中,然后再让这个盒子出现在界面上(即这些控件以整体形式出现)。书写界面上的英文长度的时候,请与对应的中文进行比较,确保汉化后中文能够被完全显示。代码中如果出现了需要在界面上出现的文字,必须用英文表示,并且使用tr函数将其包含。如:tr(“message!”)不能在程序中将这些文字直接用中文替换。2.6 GDI绘图理论基础 任何图形程序的输出,都离不开图形设备接口GDI(GraphicDeviceInterface),它是管理Windows应用程序在窗口内的绘图操作和与此相关的许多其它信息。如图形设备(打印机、显示器)的信息、绘图的坐标系统和映射模式、绘图工具的当前状态(什么样的画笔、画刷、文本的前景色与背景色、文本所使用的字体)7。Windows的GDI绘制的各种图形(点、线、圆、多边形、矩形等)是与设备无关的,即在屏幕的窗口内绘图与在打印机上绘图是相似的。GDI是一个可执行程序,它接收Windows应用程序的绘图请求(表现为GDI调用),并将它们传送给相应的设备驱动程序,再由设备驱动程序驱动相应的硬件设备,如打印机或显示器输出。应用程序使用GDI可以对三种类型的图形进行操作:文本操作、矢量图形操作和光栅图形操作(图像操作)。(1)文本操作是以逻辑坐标为单位来计算文本的输出位置,用户可以通过各种GDI函数来作出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁