APP下载

Linux环境下Qt库多语言界面实现

2016-05-14木太里甫·艾山

软件导刊 2016年5期

木太里甫·艾山

摘要:随着网络和计算机技术的发展及应用,软件产品的程序代码与使用界面的语言数据分开,通过翻译使用界面,或进行特殊定制,使得软件产品能够在本地语言环境下使用。就面向国内市场的软件产品而言,本地化可以理解为中文化。在分析Qt库的基础上,对目前几种主要的多语言界面开发技术进行研究,并对跨平台Qt库的优点进行了分析。

关键词:Linux;Unix;Qt库;C++

DOIDOI:10.11907/rjdk.161053

中图分类号:TP301

文献标识码:A 文章编号:1672-7800(2016)005-0021-03

0 引言

随着信息技术的发展特别是互联网的普及,越来越多的人将计算机作为信息提取、存储和交流的工具。经过我国计算机专家多年努力,汉字的输入、显示和处理已经取得了长足进展,但是对于多语言方面的资金和人力投入较少,使得这些多语言处理系统不够标准和统一,严重阻碍了多语言信息技术的发展和信息交流。而目前使用Qt来开发多语言界面实现多语言处理被很多开发者看好。

本文在Linux环境下基于Visual C++进行开发设计,主要对多语言的显示问题进行研究,实现了多语言显示、动态切换等功能。设计并实现了多语言的显示处理模型,模型首先使用tr( )函数处理系统中所使用的文字信息段,并将有关文字书写方向的处理封装在动态切换模块中,然后给出水平从左向右的文字格式,通过宏加载调用语言模块,解决多语言的显示及动态切换问题。

1 Qt库多语言界面开发环境

1.1 Linux

Qt库是目前Linux环境下非常流行的一个面向对象的C++类库。随着时间的推移, 使用Qt库来开发Linux下的面向对象应用软件将日益普遍。Qt是Linux下开发图形应用界面的一个分支,是一个多平台的C++图形用户界面应用程序框架,为应用程序开发者提供建立艺术级图形用户界面所需的所用功能。

Ubuntu Linux操作系统,在Ubuntu Linux桌面版原有基础上,主要在系统优化、硬件兼容、国际化语言支持以及界面设计等方面集中进行了改进[1],使之更加人性化,更加便于用户使用和维护。Ubuntu Linux Desktop提供了丰富的在线帮助信息,是用户使用和学习时的主要求助对象。

1.2 C++

Qt是基于面向对象的C++语言,它提供了KDE桌面环境,目前已部分地支持水平反向模式。许多Qt特性基于QObject的继承,通过标准C++技术实现。Qt包括多达250个以上的C++类,还提供基于模板的collections、serialization、file、I/O device、directory management、datetime类。甚至还包括正则表达式的处理功能,支持2D/3D图形渲染,同时支持OpenGL。

1.3 Qt设计器

即Qt Designer,是用来设计和实现用户界面并能够在多平台下使用的一种工具。Qt设计器可以使用户界面设计实验变得简单,在任何时候都可以要求所生成的代码去重建Qt设计器产生的用户界面文件,并可以根据用户的喜好来改变[2]。窗体设计工具如图1所示。

Qt Designer新版本可以实现将所有Form组织在一起,既方便了管理,也可以在不同的Form之间共享图像和数据。通常,一个工程中包含以下几种类型的文件:工程文件 (.Pro)、窗体文件(.Ui)、窗体实现文件(.Ui.H)和主函数(.Cpp)等[5]。QtDesigner工作流程如图2所示。

1.4 Unicode

Unicode是一种字符编码方法,可以容纳全世界所有语言文字的编码方案。它主要用于解决使用不同语言编写文本以及字符集种类繁多所带来的种种问题。它给每个字符提供了一个唯一标识的二进制编码,以满足跨语言、跨平台的文本转换及处理要求。任何字符都可以无损地转换为Unicode。目前,Unicode可以表示90 000余个编码符号[7]。

Qt提供完整的Unicode支持,包括输入法、字体、剪贴板、拖放和文件名。文件I/O缺省为Latin-1,在QTextStream中带有Unicode选项。Qt程序可以在Windows 95/98和Windows NT之间移植,而无需不同的二进制码以支持Unicode[4]。

2 Qt库多语言界面实现

2.1 界面构造

Windows环境为人们所熟知的Visual Basic及Visual C++都有比较方便的图形界面构造方式,而针对Qt也有一个图形界面的所见即所得工具QtDesigner。根据这一工具可以任意构造需要的图形界面,并且可利用UIC工具将生成的UI文件转换为CPP文件和h文件,实现界面融合。Qt Designer既有Windows系统下的版本,也有Unix等操作系统下的版本,可以根据需要在任意平台上开发。鉴于Qt完美的跨平台特性,这项工作由一个项目小组进行即可[3]。具体开发过程如图3所示。

2.2 动态语言切换

对于绝大多数应用程序,在main()中检测用户的首选语言并且加载适当的.qm文件。但是对于用户则需要动态切换语言,所有窗口首次生成时并不含有任何可见文字,所有文字部分全部设为空白。调用translate方法从当前翻译器中获得对应于当前语言的可见文字,再分别设置每个文字项。

语言菜单中的两个选项是一个信号发射机制。语言切换信号由MainWindow的translateTo*槽接收。首先由该槽卸载当前的翻译器,然后根据当前语言类型重新将翻译器加载到应用程序中,最后调用所有有窗口的translate方法实现即时翻译。方法如下:

4 发展前景

随着Linux操作系统的普及和对于新一代开发工具的渴望,利用Qt库来实现多种多层次的软件开发平台是一个必然趋势。在Linux环境下,Qt是一种开发图形程序应用的理想构架,利用跨平台运行机制,可以打破不同操作系统之间的约束,并且其面向对象的环境也是一大优点。日益完善的Qt会以崭新的一面面对广大用户群和开发群,使得基于Qt库来实现多语种技术具有更加广阔的发展前景。

5 结语

本文在介绍Qt库相关技术和平台的基础上,阐述了基于Qt库实现多语言界面的具体过程。笔者认为,Qt库多语言技术发展较为成熟,随着时间的推移,使用Qt库来开发Linux环境下的面向对象应用软件将会变得越来越广泛。Qt集成了很多C++类,因而编程起来方便简洁,可以实现精美的图形用户界面。随着嵌入式技术的发展,它也广泛应用于嵌入式系统编程中,大大提高了编程性能。Qt作为一种新型的GUI应用程序开发工具,无疑是一个划时代的、颇具竞争性的软件工具。

参考文献:

[1]孙玉芳,姚延栋,吴健.传统蒙古文变形显示机制研究与实现[J].中文信息报,2004(5):84-85.

[2]刘汇丹,建武,姚延栋,等.基于Qt的国际化图形用户界面设计与实现[J].中文信息报,2006(4):94-98.

[3]倪继利.Qt及Linux操作系统窗口设计[M].北京:电子工业出版社,2006(1):81-100.

[4]许德新,谈振藩,高延滨.基于Qt组件库应用程序的生成及其跨平台实现[J].东北农业大学学报,2006(3):373-376.

[5]李全虎.交互界面开发工具——Qt[J].中国科技信息,2005(5):33.

[6]万长胜,金革,王坚,等.用Qt进行面向对象软件的设计与开发[J].核电子学与探测技术,2004(3):311-313.

[7]陈春艳,李宝智.基于高效UTF的Unicode编码方式研究[J].电脑知识与技术,2007(3):105-106.

(责任编辑:孙 娟)

Abstract:With the development of computer technology and large-scale application of computer technology, software products and the use of code language interface to separate the data through the use of translation interface, or a special custom-make software products to the local environment, the use of language. On the domestic market for software products, the localization can be understood as in culture. This article is currently on the Qt library to analyze and present several major multi-language interface on the development of the technology introduction and analysis, especially for cross-platform advantages of the Qt library analyzed.

Key Words: Linux;Unix Library;Qt;C++