logo资料库

基于Qt4的聊天程序设计.pdf

第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
资料共44页,剩余部分请下载后查看
安徽工业大学 毕业设计(论文)说明书 摘 要 本文主要介绍了如何用 QT 技术来实现一个局域网的聊天软件。论文阐述了 Qt 的概念,发展历史,功能及其应用平台,以及 Qt 的发展前景;讲述了 SOCKET 通信 的工作原理及其应用方面;分别叙述了 TCP/IP 通信和 UDP 通信的工作流程和应用方 式,以及它们之间的区别。本文还介绍了软件的需求分析,界面设计,及其测试用例, 并且比较详细的描述了整个软件的实现过程。 本软件主要是应用于局域网的聊天,采用最基础的 C++语言,用 Qt 界面开发工 具来开发,使用了 TCP/IP 和 TCP 通信协议进行通信。该软件应用 Qt 进行界面开发, 能够开发出优美的界面;用 TCP 通信实现聊天信息之间的传输。通过聊天工具的使 用,让分布在不同地点、使用不同机器的同一个局域网用户能够及时进行信息交流, 从而达到信息传递和信息共享的目的,提高工作效率。适用于局域网使用的网络聊天 工具,其操作简单,灵活性好,有较好的稳定性。该聊天软件是在 Windows 平台下 的 Qt Creator 中开发,然后放在 Linux 平台下编译成功,证明了 Qt 良好的跨平台特 性。 关键词:QT;TCP/IP 通信;TCP 通信;界面开发 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 第 1 页 共 44 页
安徽工业大学 毕业设计(论文)说明书 ABSTRACT This paper describes how to use QT technology to achieve a software of chat base on LAN. This paper expounds the conception of QT, the history of QT, the function of QT, the application platform of QT, and the development prospects of QT. This paper also describes how to work of SOCKET communication and the ways about it be used. It introduces the workflow and the ways about it be used that about TCP/IP communication and UDP communication, and the different between them. This paper also introduces the demand analysis, the design of interface, and its test cases about the software. It also describes the realization process about software in detail. This software is used to chat on LAN. It uses C++ language and QT develop software to develop this software. The software uses TCP/IP and TCP protocol deal to chat with others. Through the use of chatting tools, let distribution in different place, use the same LAN users to different machine can exchange of information in time, so as to achieve the information transfer and the sharing of information purpose, improve the work efficiency. Applying to the use of network LAN chatting tools, it has simple operation, good flexibility, and better stability. The chat software is in the Windows of the workbench Qt Creator in the development, and then in a Linux the workbench compile successfully, and prove the Qt good cross-platform characteristics. KEYWORDS: Qt;TCP/IP communication;UDP communication;interface development ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 第 2 页 共 44 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 安徽工业大学 毕业设计(论文)说明书 目 录 3 1 绪论.................................................................................................................................. 5 1.1 选题背景................................................................................................................. 5 1.2 课题研究的目的和意义......................................................................................... 5 1.3 聊天工具的关键技术............................................................................................. 6 1.4 本章小结................................................................................................................. 6 2 什么是 Qt......................................................................................................................... 7 2.1 Qt 简介.................................................................................................................... 7 2.1.1 认识.............................................................................................................. 7 2.1.2 Qt 的特点..................................................................................................... 7 2.1.3 Qt 的类库..................................................................................................... 9 2.2 Qt 开发环境搭建.................................................................................................. 10 2.2.1 开发环境.................................................................................................... 10 2.2.2 测试环境.................................................................................................... 10 2.2.3 开发工具.................................................................................................... 10 2.3 Qt 对象间通讯机制.............................................................................................. 11 2.4 本章小结............................................................................................................... 12 Linux 网络编程............................................................................................................. 13 3.1 TCP/IP 协议概述.................................................................................................. 13 3.1.1 OSI 参考模型与 TCP/IP 参考模型........................................................... 13 3.1.2 网络层........................................................................................................ 14 3.1.3 传输层协议................................................................................................ 14 3.1.4 应用程序部分............................................................................................ 16 3.2 网络编程基础..................................................................................................... 16 3.2.1 Socket 概念............................................................................................... 16 3.2.2 Socket 类型............................................................................................... 16 3.2.3 Socket 基础编程....................................................................................... 16 3.2.4 Socket 编程步骤....................................................................................... 18 3.3 本章小结............................................................................................................... 18 Qt 的 TCP 网络编程....................................................................................................... 19 4.1 Qt 中与 TCP 有关的类.......................................................................................... 19 4.1.1 QTcpSocket 类........................................................................................... 19 4.1.2 QTcpServer 类........................................................................................... 20 4.1.3 其他有关的类............................................................................................ 20 4.2 一个简单的 C/S 程序描述................................................................................... 21 4.3 本章小结............................................................................................................... 22 5 聊天室的详细设计........................................................................................................ 23 4 第 3 页 共 44 页
安徽工业大学 毕业设计(论文)说明书 5.1 Qt4 程序开发方法和流程.................................................................................... 23 5.1.1 开发方法.................................................................................................... 23 5.1.2 基本流程.................................................................................................... 23 5.2 功能分析............................................................................................................... 24 5.3 系统总体构架....................................................................................................... 24 5.4 用户登陆界面设计............................................................................................... 25 5.4.1 登陆对话框界面布局................................................................................ 26 5.4.2 登陆界面具体实现.................................................................................... 28 5.6 聊天室客户端设计............................................................................................... 29 5.6.1 设计原理.................................................................................................... 29 5.6.2 设计思路.................................................................................................... 30 5.6.3 客户端界面设计........................................................................................ 30 5.7 本章小结............................................................................................................... 30 6 测试结果分析................................................................................................................ 31 6.1 Linux 平台测试.................................................................................................... 31 6.2 Windows 平台测试................................................................................................ 35 6.3 结果分析及难点解析........................................................................................... 38 6.3.1 结论............................................................................................................ 38 6.3.2 Qt 字体显示问题....................................................................................... 38 6.3.3 在 Windows 下其它机器上发布 Qt 程序的问题...................................... 38 6.3.4 Qt 中 widget 背景颜色/图片的设置....................................................... 39 6.4 本章小结............................................................................................................... 41 结束语.................................................................................................................................. 42 参考文献.............................................................................................................................. 43 致谢...................................................................................................................................... 44 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 第 4 页 共 44 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 安徽工业大学 毕业设计(论文)说明书 1 绪 论 1.1 选题背景 21 世纪以来网络高速发展,人类生活也越来越依赖网络,很多时候人与人之间 的交是在网络上进行。由于网络交流的实时性和便捷性,即时通信系统也被越来越多 的人所使用。以 QQ、MSN 为代表即时通信系统除了普通生活上的交流,也在商业 交流中越来越受到重视,它是个很好的客户与客户之间即时交流的平台,在时间上它 要比电子邮件更加具有实时性,而费用相对电话交流也要经济得多。在这种环境下, 聊天软件作为一种即时通信工具,得到了很好的发展。 但是如果在没有外网的情况下这些软件就无用武之地了。本软件可以在局域网中 进行随意的聊天,使用方便,同时也具备聊天的基本功能。解决了以往因为没有外网 所导致的互相之间联系困难等一系列的问题,此软件拥有实时性、跨平台性、成本低、 效率高、安全性能高等诸多优势,必定会成为校园、公司和企业内部喜爱的网络沟通 工具。 本文主 要实现在服 务器创建聊 天室的前提 下,不同客 户可以在聊 天室里群 聊。 1.2 课题研究的目的和意义 局域网 聊天工具, 除了能加强 网络之间的 信息沟通外 ,最主要的 是可以将 网站信息与聊天用 户直接联系在一起。通过网站信息向聊 天用户群及时群发送, 可以迅 速吸引聊天 用户群对网 站的关注, 从而加强网 站的访问率 与回头率 ;局 域网聊 天工具利用 的是互联网 线路,通过 文字、语音 、视频、文 件的信息交 流 与互动 ,有效节省 了沟通双方 的时间与经 济成本;局 域网聊天软 件不但成为 人 们的沟通工具 ,还成为了人们利用 其进行电子商务、工作、学习等交流的平台 , 将日常办公的传统 沟通方式替换,有效的减少办公费 用的同时,较之更有效率 。 而 Qt 在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。 Qt 可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行 效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。 这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优 势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特 点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质 量,延长软件生命期。 因此,基于 Qt 的网络聊天室的应用程序开发是一个非常有意义的课题,具有重 要的研究和商业价值。另外,通过本软件的设计,检验了学习效果和动手能力,进一 第 5 页 共 44 页
安徽工业大学 毕业设计(论文)说明书 步深入 Qt 的学习,提高自己的编程水平,从而达到理论与实践相结合的目的。 1.3 聊天工具的关键技术 本文中所设计的聊天工具其关键技术也是表现在多个方面的,但本文则着重于介 绍其中的一种,即客户/服务器体系结构的设计。顾名思义,其结构具体包括客户端 和服务器两部分的结构。客户端负责产生和访问数据,服务器则负责处理和储存数据。 我们之所以选择C/S 结构主要是考虑到两个方面的因素,一方面是客观现实的要求, 我们可以看到的是C/S 结构是一个典型的非对等结构,也就是说,客户端和服务器处 在一个完全不平等的位置,服务器具有许多客户端所不具有的资源和处理能力,而这 正是符合网络存在的真实性;另一方面则是技术层面的问题,考虑到网络上不同主机 之间的数据生成和处理都是不同步的,但通信现象又具有随机性,所以必须为之设计 一种提供同步数据交换的机制,而C/S 结构正是很好的做到了这一点。总的来说, C/S 结构具有以下的优势和特点:集中关注客户数据交换量,保持数据交换的透明性, 提高了聊天工具整体的安全性。 另外,Qt 对 Socket 的封装,极大地方便了开发人员,使得开发人员不用面对各 种复杂的 API 函数与数据结构。缩短了开发周期,保证了代码的高效与简洁。同时 Qt 良好的跨平台性。也减少了开发者在开发不同平台下应用程序的工作量。因此可 以预见 Qt 在将来的应用将更加广泛。 1.4 本章小结 在网络越来越发达的今天,人们对于网络的依赖越来越来多,由此产生的聊天工 具也越来越多,例如,国外的 MSN,国内的腾讯 QQ 等。基于 Qt 网络编程的强大功 能,本次毕业设计使用 Qt 编写一个简单的局域网聊天系统。本系统采用客户机/服务 器构架模式通过 Qt 提供的QSocket 类来连接客户机与服务器并使它们之间相互通信。 另外,Qt 在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发, 是本次采用 Qt 开发的的主要原因之一。 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 第 6 页 共 44 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 安徽工业大学 毕业设计(论文)说明书 2 什么是 Qt 2.1 Qt 简介 2.1.1 认识 ◆ 历史 QT 是一个跨平台的 C++应用程序开发框架,由挪威 Troll Tech(奇趣)公司出品。 它提供给应用程序开发者建立图形用户界面所需的所有功能。Qt 是完全面向对象的, 很容易扩展,并且允许真正地组件编程。 2008 年 6 月被 Nokia 公司收购,目前它是 Nokia 的 Qt Development Frameworks 部门的产品。2009 年 5 月 Nokia 宣布 Qt 源代码管理系统面向公众开放。Qt 的源代码 管理采用 Git。 ◆ 授权模式 Qt 分为商业版本和开源版本,提供三种授权方式,功能和性能没有区别。Qt 商 业授权适用于开发专属商业软件。此版本适用于不希望与他人共享源代码,可以任意 修改 Qt 的源代码,而不需要公开。提供技术支持服务。Qt4.5 及以后的版本开始遵循 LGPL。LGPL 允许链接到它的软件使用任意的许可证,可以被专属软件作为类库引 用、发布和销售。使用 GPL V3 许可,必须在源代码中包含 GPL 的许可,不用于商 业应用。 ◆ 支持平台 Qt 支持 Microsoft Windows 95/98, Microsoft Windows NT, Linux , Solaris , SunOS, HP-UX, Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等 操作系统, Qt 的跨平台特性,是选择 Qt 的一个非常重要的原因。对于相同功能的 软件,我们无须针对不同的操作系统编写不同程序,只需将相同的代码针对不同的环 境编译即可 ◆ 使用 Qt 开发的程序 KDE:著名的桌面环境、Google 地球(Google Earth):三位虚拟地图软件、 VirtualBox:虚拟机软件、Opera:著名的网页浏览器、VLC 多媒体播放器:一个体 积小巧功能强大的开源媒体播放器、Arora:一款跨平台的开源网页浏览器、eva:Linux 版 QQ 聊天软件、Skype:一个使用人数众多的基于 P2P 的 VOIP 聊天软件等等。 Qt 作为新型的 GUI 开发工具,具有与一般的工具包所不同的特征,使它的应用 非常广泛。 2.1.2 Qt 的特点 1). 可移植性 Qt 是一个跨平台 GUI 工具箱,不仅适用于 Unix,它同样适用于 MS Windows。 如果开发平台是 MS Windows,可能选择的 GUI 工具箱为 Microsoft Foundation Classes 第 7 页 共 44 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 安徽工业大学 毕业设计(论文)说明书 (MFC),这样就会失去众多的 Unix 用户。相反,如果开发平台是 Unix,可能选择 其它工具箱,如 Motif 等,同样会失去众多的 Windows 用户。如果选择的 GUI 工具 箱为 Qt,则只要在不同的平台上简单的编译源代码,就可以使原程序在不同的平台 上运行,从而解决丢失用户的问题。 Qt 把在处理不同窗口系统时的潜在问题隐藏了起来。为使 Qt 使用方便,Qt 包含 了一系列类,这些类使开发人员避免了在文件处理、时间处理等方面存在的依赖操作 系统方面的细节。 2). 国际化(Internationalization) 所谓国际化,通俗的讲,就是指在某国开发的软件可以方便的被其它国家的人使 用。Qt 为本地化应用提供完全的支持,所有用户界面文本都可以基于消息翻译表被 翻译成各国语言。另外,Qt 完全支持双字节 16 bit 国际字符标准。利用 Qt 开发跨平 台的国际化软件是一个方便、增量的过程。在开发过程中,利用 Qt 的 linguist 界面工 具就能方便的将开发的软件翻译成各国语言,从而实现软件的国际化。 3). 面向对象 Qt 是一个 C++工具箱,它由几百个 C++类构成。在程序设计中可以使用这些类, 如果 Qt 没有提供真正适合需求的组件,则可以方便的修改现有的组件或者重新编写 组件。Qt 具有模块设计和注重软件构件或元素的可重用性的特点。一个组件不需要 知道它的内容,而通过 Qt 特有的 signal 和 slot 机制与外界通信、交流。 使用 Qt 进行应用程序的开发,可以充分利用其面向对象和模块化的特征,从繁 琐的编程中解脱出来,专注于应用程序本身的实现。 4). 可用户化的外观 Qt 支持主题,所以基于 Qt 的应用软件能在 Motif 外观、Windows 外观,以及另一 些用户化的外观之间互换,甚至改变运行时间。这些应用程序不管是在 X Windows 下还是在 Microsoft Windows 下都可以独立操作、运行。 5). 独有的 Signal Slot 机制 Signal Slot 机制是 Qt 最重要的特征。在 MS Windows 中,程序通过消息机制和 事件循环来实现图形对象行为的触发和处理;在 Qt 中,程序在一个类中定义多个 Signal 和 Slot,Signal 就相当于“事件”,而 Slot 就相当于响应事件的“方法”。为 了实现“事件驱动”,需要将一个类的 Signal 和另一个类的 Slot 连接起来(使用 connect)。采用这种机制是一种安全可靠的方法,它允许回调。并支持对象之间在彼 此不知道对方信息的情况下进行合作,这使 Qt 非常适合于真正的构件编程。 6). 开发程序的方便性 Qt 提供了一个可视化的开发工具 Qt Designer,使用该工具就像在 Windows 中使 用 Visual C++那样可以直接向项目中添加各种组件,而不需要一步一步地编写代码, 这个特点是其它非可视化编程工具望尘莫及的。Qt Designer 中包含全面的联机帮助文 档,包括超文本方式的 Qt Manual,man 帮助手册页和补充指南。这些帮助不论是对 于初学者还是专业人士,都是非常方便的。 第 8 页 共 44 页
分享到:
收藏