资源描述:
《qt在国产操作系统中的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、QT在国产操作系统中的应用QT在国产操作系统中的应用 一、引言 在信息化建设过程中,随着计算机技术的快速发展,尤其近几年国家重视支持国产软件的发展,一系列国家政策的发布以及在核高基(核心电子器件、高端通用芯片及基础软件产品)的推动下,诞生了中标麒麟、红旗Linux等中文操作系统。从某个层面讲,操作系统的天下不再是微软独大了。这些操作系统产品的诞生对打破微软在中国的垄断地位,保护我国信息系统的安全,促进民族软件产业的发展具有重要的战略意义。 但目前针对国产操作系统,许多优秀的界面开发工具因受限于操作系统的限制,不能在国产操作系统上使用,或者说没有在微软操作系统使用那么方便。Q
2、t的强大跨平台功能,无疑成为国产操作系统支持可视化软件开发的主要解决方案。 Qt是Nokia开发的跨平台的C++图形用户界面应用程序框架,完全面向对象的,很容易扩展,移植性好,并且允许真正地组件编程。而良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。目前Qt的强大功能及诸多优点赢得许多巨头IT厂商的青睐。 二、QT的实现结构原理 QT程序是基于C++编写的,图形用户界面变成同时需要运行效率和高水平的灵活性。QT通过结合C++的速度为这一领域提供了QT的对象模型。 QT的实现结构原理如下图: QT的集成开发环境QtCreator,在国产
3、操作系统的安装与ake构建工具等。 在界面事件服务方面,有如下几个特性:一种被称为信号和槽一种非常强大的事件和事件过滤器;可查询和可设计的属性项;根据上下文进行国际化的字符串翻译;完善的时间驱动的计时器等。QT把下面这些特性添加到了C++当中。这些大多是基于QObject的继承,通过标准C++技术实现的。 QApplication是必须构造的QT主对象,需要在一开始的时候就构造这个对象,并把命令行参数传递给这个对象,每个QT应用程序有且仅有一个QApplication对象,该对象必须在做其他事之前创建,这个对象处理一些底层操作,如事件处理,字符串本地化和控制界面外观等。 现
4、今的国产操作系统大多基于LINUX基础上开发的,所以所使用的编译器与LINUX上相同即可。而如今的国产操作系统也是做的非常的人性化,如中标麒麟操作系统,操作时几乎与微软的操作系统没什么区别,让不熟悉LINUX操作系统环境的用户无需再去熟悉LINUX操作系统命令。在编译运行时只要点击工具条中的编译菜单,系统将自动调用编译器进行编译运行。 三、内部进程通信 在LINUX系统中开发QT内部进程有如下三个通信常用的三种机制:QCOP协议,Signal-Slot机制和FIFO机制,而QCOP协议主要用于QT嵌入式版本中。而对于桌面版的国产操作系统,下面我们主要介绍Signal-Slot
5、机制和FIFO机制。 (一)Signal-Slot机制 要实现一个好的OOP库必须解决对象间的通信的问题。在Qt中的对象间通信方法被称作Signal-Slot,这也是Qt与其它一些方法的区别之一。一个类可以定义多个Signal和Slot,而且完全是安全的。Signal就好像是.L.事件,而Slot则是响应事件的方法,其实和一般的函数没有太大的区别。而需要实现它们之间通信时,就将某个类的Slot和另外一个类的Signal连接起来,从而实现事件驱动。如下面语句: connect(ui.confirm_btn,SIGNAL(clicked()),this,SLOT(confirm
6、())); 表示点击界面中的确定按钮,程序将响应槽函数confirm()中的操作;当然,这里的信号是预先定义好的信号,用户在使用该机制时,可以根据需要自行定义信号。 (二)FIFO机制 除了Qt内部所特有的通信机制之外,一般操作系统中常用的进程间通信机制同样可以用于Qt系统内部不同进程之间的通信。如消息队列、共享内存、信号量、管道等机制,其中有些机制,如信号量,在Qt中重新进行了封装;有些机制则可以直接调用操作系统的系统调用来实现。这里,管道是一种简单实用的通信机制,用户在对Qt内部机制不甚了解的情况下,同样可以使用这种方法实现对象进程之间的通信。 在基于Qt的应用中,有
7、很多应用采用了一种客户机-服务器模式,这时就可以利用FIFO在客户机和服务器之间传递数据。例如,有一个服务器,它负责接收底层程序发来的消息,同时,它与很多客户机有关,服务器需要将收到的不同消息发送到不同的客户机,而每个客户机也有请求需要发给服务器,进而发给底层程序。服务器接收底层发来的信息,然后根据收到的信息内容,如首字节的内容,将信息发到不同客户端的管道中,实现对信息的正确分发。 四、完美的界面设计要素 使用过QT的编程者都会知道,QT的设计的图形用户界面是诸多开发工具的佼