QT在国产操作系统中的应用

时间:2022-09-14 06:35:10

QT在国产操作系统中的应用

摘要:随着国产软件的发展,基于国产操作系统下使用QT开发程序是图形用户界面软件开发研究的重点。本文分析和介绍了QT的实现结构原理、内部进程间的通信机制和完美的界面设计要素以及创建QT图形用户界面工程的主要步骤。

关键词:国产操作系统;QT;图形用户界面;信号;槽

中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2012) 13-0000-02

一、引言

在信息化建设过程中,随着计算机技术的快速发展,尤其近几年国家重视支持国产软件的发展,一系列国家政策的以及在“核高基”(核心电子器件、高端通用芯片及基础软件产品)的推动下,诞生了中标麒麟、红旗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(ui.confirm_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中编写相应的代码。

上一篇:基于U盘病毒防范的研究 下一篇:几种存储介质和方法在数字档案馆的未来应用前...