画图板的设计与实现毕业论文设计.doc
《画图板的设计与实现毕业论文设计.doc》由会员分享,可在线阅读,更多相关《画图板的设计与实现毕业论文设计.doc(60页珍藏版)》请在咨信网上搜索。
北京邮电大学毕业设计 北京邮电大学 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 画图板的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.深入了解linux下的qt creator的相关技术; 2.熟悉使用qt布局管理器的相关技术; 3.熟练掌握qt UI编辑界面的应用,训练编写程序的能力; 4.深入分析qt中的信号和槽函数的机制; 5.设计并实现qt下的画图板的基本功能; 6.训练检索文献资料和利用文献资料的能力; 7.训练撰写技术文档与学位论文的能力。 第2页 毕业设计(论文)主要内容: 1、 Qt的介绍与具体应用; 2、 QT中的信号和槽函数的机制; 3、 画图板功能设计; 4、 画图板界面设计; 5、 画图板涂鸦功能实现; 6、 画图板绘制基本图形的实现; 7、 实现编辑菜单功能; 学生应交出的设计文件(论文): 1.内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文; 2.包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页 主要参考文献(资料): [1]陈英,梁建武.Linux基础及应用教程.水利水电出版社,2008,29-42 [2]倪继利. Qt以及linux操作系统窗口设计.电子工业出版社,2006,45-152 [3]Blakowski G,Steinmetz R.A media synchronization survey:reference model,specification,and case studies[J].IEEE Journal Selected Areas in Communications,1996,14(1):5-35 [4]金西,黄汪.嵌入式Linux技术及其应用.计算机应用,2000,20(7):5-6 [5]刘峥嵘.嵌入式Linux应用开发详解.机械工业出版社,2004,53-68 [6]林锐,韩永泉.高质量程序设计指南:C++、C语言.电子工业出版社,2007,124-155 [7]Jonathan Corbet,Alessandro Rubini,Greg Koah -Hartman.Linux Device Driver.Jan 2005 [8]钱能.C++程序设计教程.清华大学出版社,2006,56-88 [9]任善全,吕强,钱培德等.一个基于QtEmbedded的嵌入式Linux应用程序的实现,计算机应用与软件,2006,2 [10]ISO/IEC JTC1/SC29/WG11.IS14496:Generic coding of moving pictures and associated audio information(MPEG-4).ISO/IEC,2000:10-15 [11]谭浩强.C++面向对象程序设计.清华大学出版社,2006,89-100 [12]王子强,刘海燕,李媛州.Linux下图形用户界面程序的开发与实现,计算机应用与软件,2005 专业班级 软件1025班 学生 南茜 要求设计(论文)工作起止日期 2014年3月17日~2014年6月27日 指导教师签字 日期 2014年3月17日 教研室主任审查签字 日期 系主任批准签字 日期 画图板的设计与实现 摘 要 本文的主要内容是记述同题课程设计中的一些关键技术和辅助文档。本文的目标是设计一款基于Qt编程语言的简易画图板,使其具有涂鸦,绘制基本图形等功能。本程序具有一定的实用意义和价值。功能分装良好可以方便的根据需求进行扩充。 本文运用材料综述的方法,首先记述了编程环境的搭建,介绍了Qt的优点,Qt编码规范和Qt的双缓冲机制在绘图中的运用。着重分析了Qt在软件开发中的编程机制,并根据应用特点进行了设计的构件与算法的需求分析。其次在需求分析中给出是可行性分析,然后放入功能分析图和流程图帮助梳理设计思路。最后在详细设计阶段完成编码,实现程序功能,得到一个功能健全的画图板应用程序。 在本文中将设计并实现画图板的一些基本功能,例如:新建,打开,保存,清空,放大,缩小,还原,基本图形绘制,转换画笔颜色等功能。最后运行结果符合设计要求,方案可行。经过测试后程序功能实现良好。 关键词 嵌入式Linux QT;图形用户界面;电子画板;双缓冲机制 i The Realization of Drawing Board Function Abstract The main content of this paper is described with the course in 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 according 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.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 flowchart 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, reduction, 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 mechanism ii 目 录 摘 要 i Abstract ii 1 引言 1 1.1 研究背景 1 1.2 研究的目的和意义 2 1.3 程序设计的环境选择 2 2 画图板设计的技术背景 3 2.1 Qt的主要特征 3 2.2 QT creator简介 3 2.3 Qt creator环境搭建 4 2.4 QT编程机制信号与槽机制简介 5 2.5 Qt编码规范 7 2.6 GDI绘图理论基础 9 2.7 双缓冲机制 9 2.8 双缓冲技术绘图 10 3 画图板项目需求分析 12 3.1 可行性研究 12 3.1.1 经济可行性 12 3.1.2 技术可行性 12 3.1.3 运行可行性 12 3.1.4 时间可行性 12 3.1.5 法律可行性 12 3.2 功能分析 13 3.3 系统用例分 13 3.4 性能需求 13 3.4.1 应用需求分析 14 3.4.2 运行需求分析 14 3.4.3 其他需求分析 14 4 画图板概要设计 15 4.1 画图板功能模块关系与划分 15 4.2 画图板总体设计流程图 16 5 画图板详细设计 17 5.1 画图板界面设计 18 5.1.1 画图板的界面元素声明 18 5.1.2 图板界面布局实现 19 5.2 画图板功能详细设计 20 5.2.1 画图板的文件编辑功能实现 20 5.2.2 画图板的图片编辑功能实现 23 5.3 画图板绘图功能实现 26 5.3.1 绘图板的基本图形绘制功能实现 26 5.3.2 绘图板自由绘图功能实现 30 5.3.3 画图板画图辅助选项实现 33 6 画图板程序测试 35 6.1 测试的重要性及目的 35 6.2 测试的方法 36 6.3 测试用例 36 6.4 测试结果 36 结 论 38 参考文献 39 致 谢 40 外文原文 41 中文翻译 49 1 引言 随着操作系统不断的更新换代,其自带的画图板界面及功能也是不断变化着,像是xp、vista、win7,它们的画图板的界面布局风格以及功能都有所不同。 这表明尽管是简简单单的一个操作系统自带画图板,系统设计人员也没有停止对它的不断研与探索, 他们在不断寻找着更人性化、更能满足大众需求的改变。 随着社会的不管发展以及计算机的不断普及,人们对画画的要求越高,对绘图系统也提出了更高更全面的要求。许多用户由于自身的画图习惯或者是视觉效果不同,对传统的画图工具可能感觉不是特别满意。就像孩子总是喜欢画可爱型,而成人则画实用的。不同年龄不同身份的人,需求不同。综合上述,为了尽量让所有人满意,在此我设计一个大概的程序模型,让别人来试试我的绘图系统。对自从上世纪计算机系统向绘画界的延伸以来,绘图技术已成为计算机系统不可分割的一部分。而图形编辑器又是图形编辑软件的基础,几乎所有的图形编辑软件,都是在拥有基本图形编辑功能的基础上实现更复杂功能的。故在图形应用非常广泛的今天,研究开发绘图系统是非常有意义的。在绘图方面实现绘制直线、矩形、圆形等基本功能,在界面设计方面实现了对图形的操作,从而从底层对绘图系统进行简单的实现。 与此同时,简单小巧的绘图记事功能软件的发展也在蓬勃向前。本软件功能与Windows下附件中的画图软件有类似功能。绘制方面的实现功能包括图片的打开新建保存,画布的放大缩小,画笔功能实现,基本图形的绘制,绘图时可以选择各种颜色,各种线宽。软件支持保存和读取jpg格式的图形。本软件运用的是面向对象程序设计的思想。相对于面向过程的设计理念,面向对象的设计方法更适用于画图板的设计,它使画图板所涉及的各部分功能模块实现更好的封装。它的特色是。一方法的唯一性,即方法是对软件开发过程全过程进行综合考虑得到的。二是高度的独立性,对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。三是良好的可扩展性,相对独立的功能模块使得程序可以根据需要进行相印的扩充或是缩减。 1.1 研究背景 计算机绘图是相对于手工绘图而言的一种高效率、高质量的绘图技术。手工绘图使用三角板、丁字尺、圆 规等简单工具,是一项细致、复杂和冗长的劳动。不但效率低、质量差,而且周期长,不易于修改。计算机绘图的发展更加趋向于用户需求导向,在一些专业领域中计算机绘图发展迅猛,例如Photoshop、Adobe image 、AutoCAD等。多个程序的汇集,组成功能齐全、能够绘制基本地图图形和各类常用地图的程序组,称为绘图软件系统,或称为绘图软件包。绘图软件通常用高级算法语言编写,以子程序的方式表示,每个子程序具有某种独立的绘图功能。绘图软件包是绘图子程序的汇集,可包括几十个至几百个子程序。用户根据需要,调用其中一部分子程序,绘制某种图形或一幅地图。 1.2 研究的目的和意义 日常生活中,有很多方面都会用到画图来解决阐述一些问题,这就需要借助计算机来进行简单的画图工作,此时就需要一个能简单解决这些问题的画图软件。本选题是设计一个简单的基于Qt creator的画图软件,能够完成一些简单的画图需求。现在比较经常使用的是windows系统下附带的画图软件,它基本上可以满足一些简单的画图需求。本设计就是按照这个画图软件的思想设计的,使画图软件能达到满足日常画图需求,便于存储编辑和展示,且要求功耗小且界面人性化,功能易扩展。 1.3 程序设计的环境选择 Qt类库大致可以分为三个部分:控件,框架和工具。控件部分包括环境控件、主窗口控件、标准对话框、基本的G U I 控件、扩展 G U I控件 、G UI 组织控件以及帮助系统控件 。框架部分包括的是一些抽象的类,通常不可见,如对象模型、抽象控件、绘图、拖放、控件外观。工具部分包括时间日期和链表树等数据结构,它们和 GUI无关普通工具包括链表、堆栈 、队列 、树等常见数据结构,如QArray。图形处理工具控制图像的编码/解码算法。如 QIm—agelO 。I/O 控制工具处理 I,0 的一些类,如 QFile。时间和日期工具类处理时间和日期,如 QDate,QTime。 在用 Qt 开发程序时,对于 G U I 的设计有两种方法,一种是通过自己写代码来界面进行布局 ,但这就需要对 Ol有一定的熟练程度;另一种是通过 QtDesigner来设计界面,只需在ui文件来拖控件来布局就行了。对只需要用 Qt进行开发的程序员来说,后者显然比前者来的快。以下结合一个实例来介绍用 QtD esigner 来开发程序的 G U I,主窗口类从 Q W idget类派生,这样我们能方便地使用 Qt的 QM enubar类来添加菜单,并使用 Qt的控件类来摆放面板控件 ,整个程序以事件为驱动,通过 Qt的 signal—slot机制与终端用户交互。设计好界面后,在程序编译后会生成一个 ui一 .h 的头文件.里面是一个U i一类,封装了一些所拖放控件的变量名和一个比较重要的setupUI函数 ,是一些布局的代码。要用到这个界面是只需继承这个类就可以了,或者是包含这个 ui~ .h 的头文件。设计类的主要思想是把所有的信号和槽放在构造函数里,程序是以事件为驱动,当产生一个信号时,会去调用相应的函数。 2 画图板设计的技术背景 2.1 Qt的主要特征 Qt是Trolltech公司的产品,Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备,Trolltech公司网址: Qt是一个多平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。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, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。 2)面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为信号与槽( signals/slots) 的安全类型来替代 callback,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效,这使得各个元件之间的协同工作变得十分简单。并且 QT是直接基于 Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。 3)丰富的 API Qt包括多达250个以上的 C++ 类,还提供基于模板的 collections、serialization、 file、I/O device、 directory management、 date/time 类。甚至还包括正则表达式的处理功能。 4)支持 2D/3D 图形渲染,支持 OpenGL 5)大量的开发文档 6)XML 支持 2.2 QT creator简介 Qt Creator是跨平台的 Qt 集成开发环境, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 具有良好的跨平台运行能力,支持的操作系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务 Qt Creator 可以帮助 Qt 用户更加快速便利的运行项目,还可以提高有经验的 Qt 开发人员的工作效率,提高代码的可读性。其中使用强大的 C++ 代码编辑器可实现快速编写代码。语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能。使用浏览工具管理源代码。集成了领先的版本控制软件,包括 Git、Perforce 和 Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换。为 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所在目录下,执行:tar zxvf qt-x11-free-3.2.1.tar.gz -C /usr/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.1 PATH=$QTDIR/bin:$PATH MANPATH=$QTDIR/doc/man:$MANPATH LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTDIR PATH MANPATHLD_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=/usr/local/qt-x11-free-3.2.1和export QTDIR 。 使用configure工具来构建Qt库和它提供的工具:./configure(./configure --help 配置选择的列表。例:-thread选项来创建这个库的一个多纯种版本。) 最后一步就要进入漫长的Qt安装编译时间了,有事的就出去办事吧,安装编译时间大约需要两个小时。 编译命令:make 安装命令:make install 。 首先我们进入Linux的图形界面,打开一个控制终端(在桌面空间处单击鼠标右键,在弹出的单菜中选择“新建控制终端”。),在控制终端里面新建一个.cpp文件,并编写程序,如下: #vi HelloWorld.cpp //建立一个HelloWorld.cpp文件 #include<qapplication.h> #include<qlabel.h> int main(int argc,char *argv[]) { QApplication app(argc,argv); QLabel *label=new QLabel("Hello World!!!",0); app.setMainWidget(label); label->show(); return app.exec(); } 写完上面的代码后保存退出(wq)vi编辑器。 #qmake -project //把.cpp文件编译成.pro文件 #qmake //通过.pro文件自动创建Makefile文件 #make //编译,生成HelloWorld执行文件 图2-1 Qt creator程序构件截图 2.4 QT编程机制信号与槽机制简介 信号/槽机制是QT区别于其它工具包的最有显著特征的部分。在GUI编程中,当一个widget改变,我们经常希望另外的widget被告知。更普遍地,我们希望任何的对象都可以互相通信。比如,如果用户点击close按钮,我们大多希望调用窗口的close()方法。 以前的工具集通过callback来实现这种通信。callback是指向函数的指针,因此,若果你想让处理函数通知你某些事件,你可以传递给另一个函数一个指针来处理函数。处理函数在适当的时候调用callback。Callbacks有两种根本的缺陷:第一,它们不是类型安全的,我们无法确定处理程序会调用正确参数的回调函数(callback)。第二,回调函数耦合于处理函数,因为处理函数必须知道去调用哪个回调函数。 Qt提供了回调的替代技术:信号和槽。当特定事件发生时引发相应的信号。Qt的widget有许多预定义的信号,同时我们也可以为widget子类添加我们自定义的信号。槽是回应特定的信号时所调用的方法。Qt的窗口部件有许多预定义的槽,但是我们也可以为窗口部件的子类田间我们自定义的槽,以处理我们所感兴趣的信号。 信号槽机制是类型安全的:信号的签名必须跟接受的槽的签名相匹配(事实上,槽的签名可以比信号的签名短,因为它可以忽略额外的字段)。因为签名是相容的,编译器就可以帮我们检测类型的不匹配。信号和槽是松耦合的:一个类产生一个信号,并不知道而且不关心那个槽接受该信号。Qt的信号槽机制保证,如果你连接了一对信号槽,槽会在适当的时间带着信号的参数被调用。信号和槽可以附带任何类型任何数量的参数。信号和槽是完全类型安全的。槽可以用来接受信号,不过槽也是普通的成员函数。类似于对象不知道谁接受它的信号,槽也不知道是否有信号连接自己。这保证了Qt可以创建完全独立的组件。一个信号可以连接无数的槽,并且一个槽可以连接你想要连接的信号。甚至可以直接连接两个信号(当第一个信号产生,立即产生第二个信号)。 信号和槽一起形成了一种强大的组件编程机制。QT的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。 可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是QT特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用“标准的C++编译器”[6][7][8]。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。 图2-2信号与槽机制示意图 2.5 Qt编码规范 第一条:尽量不要直接引用 QT 示例(或其它符合 GPL 协议的程序源代码)中源代码 如果引用了Qt示例程序,请试图在内部使用不同的代码行来组织它。 如果直接使用了Qt的源代码文件,请保留位于文件首部的版权声明。 如果您使用了别人编写的源代码,则需要取得相关的使用许可文书。但是如果你 从建议中获得的仅仅是一些想法,而不是你实际上使用的代码,你也不需要文书。 尽量不要对Qt的源代码进行修改,如果为了某重要需求而一定要对Qt源代码进行修改,那么一定要在源代码中修改的位置做详细的说明,并署名。另外还要书 写详细的修改文档。 第二条:工程文件命名遵循的原则 工程文件(.pro)命名采用:工程名+.pro的方式.ptro文件中 HEARDERS 和 SOURCE行中如果有多个文件名(一般都会有的),则使用“\”将他们隔开,并且使每一个文件名单独占一行。原则上文件名的先后顺序没有限制,但是一般的惯例是将依赖性最小的文件写在最前面,工程的主程序(一般是 main.cpp)往往出现在 source的最后。一般将 TARGET行写在 HEARDERS 和 SOURCE的下面。下面是范例: HEADERS=HELLO.H SOURCE=HELLO.CPP main.cpp TARGET=hello 工程中所有文件和目录命名中的字母一律使用小写,以保持在windows环境下的兼容性。 第三条:函数注释三部分,功能、参数和返回值 每个程序都应该以一段简短地、说明其功能的注释开头。请为每个函数书写注释以说明函数做了些什么。如果有参数和返回值,也需要对其进行解释。 第四条:变量、定义等注释 对于每个静态变量和全局变量,请添加相应的注释语句。对于重要的变量、定义等进行注释。 第五条:变量和函数的命名原则 变量名或函数名中使用大写字符来区分各个部分,以便于记忆和阅读。 全局(包括类中的)变量用长名字,局部变量用短名字。类成员变量前应加上 m_,全局变量加上 g_,仅与本模块有关的变量加上 l_。 如果定义Qt类库中某种类型的变量,采用将类名中大写字母提取出并合并成小写的缩写字符串的方法(去掉第一个 Q),如: QLineEdit *m_leInputNum; QString *m_sName; 如果程序中出现了两个类名缩写一样的问题,如:QToolBar 和 QToolButton的缩 写都是tb,这时应将其中一个类的缩写进行变动,变动的准则以能够避免冲突, 同时缩写能够表达类名为准。如这里可以将 QToolBar 的缩写为 tbar,QToolButton仍用 tb,这样就可以避免命名冲突。 声明自定义对象类型的变量采用同样的方法。 局部变量应尽量易懂简洁,使用常见的变量,如 Num,nCount,i,j,k,n,len,pos,offset,nReadNum,index,nRet,ret,string,filename 临时变量,如 ltmp,ftmp,tmpStr,tempStr自定义信号以 sig_开头,自定义槽以slt_开头。Sig_和 slt_后面第一个单词(或其缩写)要以小写字母开头,第二个以后的单词(或缩写)要以大写字母开头。 如:sig_ mouseClicked(),slt_getMouseEvent()。 另外,信号和槽的参数必须完全对应。在用connect 进行连接的时候,信号和槽中的参数可以只写参数类型。基本结构是数个以大写字母开头的单词。 返回自定义private变量值的函数命名建议以get开头,如getLength()可以表示取回成员变量 m_nlength() 等; 设置自定义private变量的函数命名建议以 set开头,如SetLength()可以表示设置成员变量 m_nlength()等。这样做是为了避免与Qt类中的函数名发生冲突。全局函数命名请以小写g开头。 第六条:自定义类的命名原则 自定义类一般有两个文件,一个头文件,一 个实现体cpp。文件名采用被封装的类 名,但是一律小写。如果一些结构或宏仅与本类有关,可在类头文件中定义。 任何自定义类命名不要以Q开头,以免与 Qt 类库中的类混淆。(对自定义的类命名建议以大写字母 A 开头(MMCP),表达一定版权信息,并且在文件列表时自定义类会依次排在列表的前部)。 如果需要自定义一个基类,请确保该基类的类名以base结束。 工程的界面类一般从 Qwigdet\QMainWindow\QDialog类继承,工程主界面类的命名采用“工程名+MainWindow”方式,如:AChartMainWindow即表示Chart工程的主界面类。主界面类往往在程序的开头(main函数)处构造,建议将构造主界面类的语句(main函数)放在 main.cpp中。对于一般的窗体,请在类名的最后体现窗体的类型,一般的方法是如果从Qwidget 继承而来,则以Widget结尾,如果从QMainWindow继承而来则以Window结尾,从QDialog继承而来,则以Dialog结尾。如果在自定义类中(从Qt某个类继承),如果覆盖了父类中某个函数,请在该函数的声明旁边注明。 第七条:类声明体中的编排 在类的声明体中,请按照:Q_OBJECT、public:signals:、slots:、protected:private:,的顺序将成员变量和函数进行排列。如果需要在这个类(class)中声明某种数据类型(结构、枚举等),请将这个声明放在所有成员变量和成员函数的 前面。如果在一种类型的声明中,即有成员变量,又有函数声明,请使用两个相同 的类型声明将它们隔开,如: Private: Void function(); …… Private: Int m_number; …… 对一般的界面类,如果使用了信号/槽,则 class声明的第一行必须是 Q_Object建议避免使用protected类型的成员函数或者成员变量,因为在Qt中,大量的事件处理函数(槽)均是以protected类型出现的。 第九条:工程中目录的使用 工程中的图片(建议以JPEG.PNG格式(避免使用gif)),统一保存在“./pics” 目录中。工程使用的汉化相关文件(.po和.qm)放在“./i18/”目录中。工程的临时交换目录请以宏的形式定义(建议使用“./temp/”),不要使用固定目录。另外,请不要使用“./temp/”目录名(这个目录名在Qt for windows的版本中有特殊意义)。 第九条:界面布局原则 制作 Qt界面的时候,请尽量使用布局管理器(QLayout)进行布局管理,避免使用绝对坐标,除非你能够绝对肯定这个界面的尺寸是完全不会变换的。如果某个区域出现了很多控件,在保证不会影响程序控制结构的前提下,请将这些控件放在一个可以包含其它窗口控件的盒子(如QWidget,QFrame,QGroupBox)中,然后再让这个盒子出现在界面上(即这些控件以整体形式出现)。书写界面上的英文长度的时候,请与对应的中文进行比较,确保汉化后中文能够被完全显示。 代码中如果出现了需要在界面上出现的文字,必须用英文表示,并且使用tr函数将其包含。如:tr(“message!”)不能在程序中将这些文字直接用中文替换。 2.6 GDI绘图理论基础 任何图形程序的输出,都离不开图形设备接口GDI(Graphic Device Interface),它是管理Windows应用程序在窗口内的绘图操作和与此相关的许多其它信息。如图形设备(打印机、显示器)的信息、绘图的坐标系统和映射模式、绘图工具的当前状态(什么样的画笔、画刷、文本的前景色与背景色、文本所使用的字体)[7]。 Windows的GDI绘制的各种图形(点、线、圆、多边形、矩形等)是与设备无关的,即在屏幕的窗口内绘图与在打印机上绘图是相似的。 GDI是一个可执行程序,它接收Windows应用程序的绘图请求(表现为GDI调用),并将它们传送给相应的设备驱动程序,再由设备驱动程序驱动相应的硬件设备,如打印机或显示器输出。 应用程序使用GDI可以对三种类型的图形进行操作:文本操作、矢量图形操作和光栅图形操作(图像操作)。 (1)文本操作是以逻辑坐标为单位来计算文本的输出位置,用户可以通过各种GDI函数来作出- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 画图板 设计 实现 毕业论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文