QT实现多国语言的动态切换
来源:互联网 发布:淘宝女装图片 编辑:程序博客网 时间:2024/04/27 21:58
摘要:本文论述了如何使用QT实现程序的多语系支持以及多语系的动态切换。
前沿
我们生活中用到的程序大多都是支持单一语言的,比如在中国我们用到的软件大多是汉语的,也有很少部分使用的是英语的,但是很少有软件可以实现两种语 言的动态切换。不过随着近几年我国的发展支持多国语言的软件也越来越多,比如上海地铁售票机,动车组自动售票机等都是支持汉语和英语两种语言的。使用QT 编程可以很容易的编写支持多国语言的软件。
用QT实现多国语言支持有两种情况:
第一种:使用UI编辑器来自动生成界面,这种方式实现多语系的动态切换很容易。
第二种:不使用UI编辑器,自己通过亲自编程来设计应用程序界面,这种方式实现多语系动态切换比较繁琐,注意不是难;
下面先来介绍第一种的实现方法:
void MainWindow::ch_language()
{
if(this->languageState)
{
this->languageState=CHINESE ;
this->translator.load("test_ch") ;
this->pOwner->installTranslator(&(this->translator));
}
else
{
this->languageState=ENGLISH ;
this->translator.load("test_en") ;
this->pOwner->installTranslator(&(this->translator));
}
}
这个函数是实现动态切换的主要程序,其中languageState是用来记录当前语言的状态,pOwner是QApplication对象,我们只需使用QTranslator加载不同的文件就可以实现多语系的动态切换。
第二种方式就不那么简单了,除了要运行上述函数外还要将将要切换的语言重新设置一遍。
void MainWindow::langChang()
{
if(this->langState)
{
this->langState=CHINESE ;
this->translator.load("test_ch") ;
this->pOwner->installTranslator(&(this->translator));
}
else
{
this->langState=ENGLISH ;
this->translator.load("test_en") ;
this->pOwner->installTranslator(&(this->translator));
}
this->setWindowTitle(QObject::tr("hello world"));
this->addFileAction->setText(QObject::tr("New File"));
this->langChAction->setText(QObject::tr("Chinese"));
this->playAction->setText(QObject::tr("Play")); ;
this->stopAction->setText(QObject::tr("Stop"));
this->menuBar()->addMenu(QObject::tr("FIle")) ;
this->menuBar()->addMenu(QObject::tr("Control")) ;
}
因此比较麻烦,特别是界面比较繁琐的时候,将是很麻烦的。
下面来讨论为什么第一种方法为什么不需要重新设置语言了。因为使用Ui时有这个函数
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);//这里实现语言翻译器的更新。
转载自:http://www.cppblog.com/zhonghua/archive/2012/03/22/168616.html
- Qt实现多国语言动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- c++实现动态多国语言的动态切换
- Qt实现多国语言切换
- Qt 界面实现多国语言的切换实例
- Qt多国语言的实现与切换(国际化)
- Qt 界面实现多国语言的切换实例
- Qt多国语言的实现与切换(国际化)
- Qt多国语言的实现与切换(国际化)
- APP,实现多国语言动态切换
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案(转)
- Qt 国际化之二:多国语界面动态切换的实现
- GUI 剖析之控件篇之复选框
- Android 横竖屏切换的解决方法
- RailsCasts中文版,#4 Move Find into Model 将查询方法从控制器上移至模型
- CentOS - Installing Apache and PHP5
- RHEL6.3下Zabbix监控实践之Zabbix的安装
- QT实现多国语言的动态切换
- C++ C# 笔试
- 笔记3:Abstract Factory 抽象工厂(创建型模式)
- xxx is not translated in yyy, zzz 的解决方法
- glVertexAttribPointer()
- oracle使用带有输入和输出参数的存储过程
- 群延迟函数(group delay function)&群延迟滤波器
- Joomla2.5 Component 组件开发入门之HelloWorld 详解!
- busybox移植和文件系统建立