qt在国产操作系统中的应用
一、引言 在信息化建设过程中,随着计算机技术的快速发展,尤其近几年国家重视支持国产软件的发展,一系列国家政策的发布以及在“核高基”(核心电子器件、高端通用芯片及基础软件产品)的推动下,诞生了中标麒麟、红旗linux等中文操作系统。从某个层面讲,操作系统的天下不再是微软独大了。这些操作系统产品的诞生对打破微软在中国的垄断地位,保护我国信息系统的安全,促进民族软件产业的发展具有重要的战略意义。 但目前针对国产操作系统,许多优秀的界面开发工具因受限于操作系统的限制,不能在国产操作系统上使用,或者说没有在微软操作系统使用那么方便。qt的强大跨平台功能,无疑成为国产操作系统支持可视化软件开发的主要解决方案。 qt是nokia开发的跨平台的c++图形用户界面应用程序框架,完全面向对象的,很容易扩展,移植性好,并且允许真正地组件编程。而良好封装机制使得qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。目前qt的强大功能及诸多优点赢得许多巨头it厂商的青睐。 二、qt的实现结构原理 qt程序是基于c++编写的,图形用户界面变成同时需要运行效率和高水平的灵活性。qt通过结合c++的速度为这一领域提供了qt的对象模型。 qt的实现结构原理如下图: qt的集成开发环境qt creator,在国产操作系统的安装与windowns上的安装几乎没什么区别,且已经做到相当的人性化了,用户只是根据向导所示的步骤即可。在功能方面,qt creator包括项目生成向导、高级的c++代码编辑器、浏览文件及类的工具、集成了qt designer、图形化的gdb调试前端,集成qmake构建工具等。 在界面事件服务方面,有如下几个特性:一种被称为信号和槽一种非常强大的事件和事件过滤器;可查询和可设计的属性项;根据上下文进行国际化的字符串翻译;完善的时间驱动的计时器等。qt把下面这些特性添加到了c++当中。这些大多是基于qobject的继承,通过标准c++技术实现的。 qapplication是必须构造的qt主对象,需要在一开始的时候就构造这个对象,并把命令行参数传递给这个对象,每个qt应用程序有且仅有一个qapplication对象,该对象必须在做其他事之前创建,这个对象处理一些底层操作,如事件处理,字符串本地化和控制界面外观等。 现今的国产操作系统大多基于linux基础上开发的,所以所使用的编译器与linux上相同即可。而如今的国产操作系统也是做的非常的人性化,如中标麒麟操作系统,操作时几乎与微软的操作系统没什么区别,让不熟悉linux操作系统环境的用户无需再去熟悉linux操作系统命令。在编译运行时只要点击工具条中的编译菜单,系统将自动调用编译器进行编译运行。 三、内部进程通信 在linux系统中开发qt内部进程有如下三个通信常用的三种机制:qcop协议,signal-slot机制和fifo机制,而qcop协议主要用于qt嵌入式版本中。而对于桌面版的国产操作系统,下面我们主要介绍signal-slot机制和fifo机制。 (一)signal-slot机制 要实现一个好的oop库必须解决对象间的通信的问题。在qt中的对象间通信方法被称作“signal-slot”,这也是qt与其它一些方法的区别之一。一个类可以定义多个signal和slot,而且完全是安全的。signal就好像是“论文联盟事件”,而slot则是响应事件的“方法”,其实和一般的函数没有太大的区别。而需要实现它们之间通信时,就将某个类的slot和另外一个类的signal“连接”起来,从而实现事件驱动。如下面语句: connect(m_btn,signal(clicked()),this,slot(confirm())); 表示点击界面中的确定按钮,程序将响应槽函数confirm()中的操作;当然,这里的信号是预先定义好的信号,用户在使用该机制时,可以根据需要自行定义信号。 (二)fifo机制 除了qt内部所特有的通信机制之外,一般操作系统中常用的进程间通信机制同样可以用于qt系统内部不同进程之间的通信。如消息队列、共享内存、信号量、管道等机制,其中有些机制,如信号量,在qt中重新进行了封装;有些机制则可以直接调用操作系统的系统调用来实现。这里,管道是一种简单实用的通信机制,用户在对qt内部机制不甚了解的情况下,同样可以使用这种方法实现对象进程之间的通信。 在基于qt的应用中,有很多应用采用了一种客户机-服务器模式,这时就可以利用fifo在客户机和服务器之间传递数据。例如,有一个服务器,它负责接收底层程序发来的消息,同时,它与很多客户机有关,服务器需要将收到的不同消息发送到不同的客户机,而每个客户机也有请求需要发给服务器,进而发给底层程序。服务器接收底层发来的信息,然后根据收到的信息内容,如首字节的内容,将信息发到不同客户端的管道中,实现对信息的正确分发。 四、完美的界面设计要素 使用过qt的编程者都会知道,qt的设计的图形用户界面是诸多开发工具的佼佼者。而结合微软的人机界面和linux内核的国产操作系统也是日渐完善,人机界面流畅完美,美观大方。 qt提供了一个可视化的开发工具设计器qt designer,使用该工具就像在windowns中使用vc++或者delphi那样可以直接向项目中添加各种组件,而无需一步一步地编写代码,这个特点是其它非可视化编程工具望尘莫及的。且在设计器中,可以通过预览功能,随时看界面运行的效果。当新建一个窗体是,系统将自动产生三个文件,即.ui文件,.h文件及.cpp文件,其中.ui就是对应的窗体文件,类似于delphi中的.dfm文件,.h文件及.cpp文件与vc中的一样,用户在.h定义,在.cpp中编写相应的代码。
转贴于论文联盟qt不仅拥有一套完整的组件,而且用户可以在使用其他人或自己所编制的组件加入到组件库中,丰富自己的组件库。用户可以直接基于这些现成的组件开发出优秀的界面;另外,qt的绘画工具类qpainer,在任意一个绘画设备上都可以润色图形,对于更高级的图形可以结合使用oopencgl,用oopencgl就像使用qt中的任意一个组件一样方便,而且比单独使用oopencgl做的3d图形效果更好。再者,qt拥有丰富的api函数,大约有250多个c++类,用户可以根据需要直接引入使用。 qt是直接基于xlib的,并不依赖于motif工具包,所以它的执行效率比一般基于微软平台的代码要高,所以,qt deinger作为作为国产操作系统下的用户界面开发工具,是非常理想的。 五、使用qt creater开发界面应用程序的一般步骤 (一)创建新项目 运行qt creater,点击菜单【file】—>【new file or project】,在弹出的对话框中,选择qt4 gui application,然后按ok,设置保存路径和一些设置选型后,一个基于gui的工程就建好了。 (二)添加和布置组件 在新建的窗体中根据需要添加各种组件,并修改其属性,然后再合理调整其布局。 (三)连接组件的信号(signal)和槽(slot) 用户可以在初始化过程中,添加connect连接语句,也可单击edit|connects打开编辑对话框,然后单击new进入一个新的连接,首先选择事件的产生者,最后选择和信号响应事件的slot。 (四)编写响应事件代码 打开与此.ui的.cpp文件的编辑窗口,在适当的位置添加代码。 (五)保存并编译执行 点击界面中的绿色的run按钮或者按下ctrl+r快捷运行程序。 六、总结 在建立中国自主知识产权的操作系统重大主题的呼唤中,国产操作系统的使用将会越来越广泛,而qt的跨平台性和强大的图形用户界面开发功能更能促进国产操作系统的发展。当然,qt也可用于控制台和服务器底层软件的开发,限于篇幅,在此就不再多写了。转贴于论文联盟
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。