admin 管理员组

文章数量: 1087135


2024年12月25日发(作者:curl post header)

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

摘要:随着网络和计算机技术的发展及应用,软件产

品的程序代码与使用界面的语言数据分开,通过翻译使用界

面,或进行特殊定制,使得软件产品能够在本地语言环境下

使用。就面向国内市场的软件产品而言,本地化可以理解为

中文化。在分析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++


本文标签: 语言 实现 使用