QT实现多国语言的动态切换
来源:互联网 发布:如何电话投诉淘宝卖家 编辑:程序博客网 时间:2024/04/28 23:21
摘要:本文论述了如何使用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);//这里实现语言翻译器的更新。
- Qt实现多国语言动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- c++实现动态多国语言的动态切换
- Qt实现多国语言切换
- Qt 界面实现多国语言的切换实例
- Qt多国语言的实现与切换(国际化)
- Qt 界面实现多国语言的切换实例
- Qt多国语言的实现与切换(国际化)
- Qt多国语言的实现与切换(国际化)
- APP,实现多国语言动态切换
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案
- 程序实现多国语言的动态切换解决方案(转)
- Qt 国际化之二:多国语界面动态切换的实现
- 初习C++点滴摘录之编程的一些规则与建议(3)
- 类的构造与析构
- 我所理解的设计模式(C++实现)——状态模式(State Pattern)
- 附加数据库出现“无法打开物理文件 "X.mdf"。操作系统错误 5:"5(拒绝访问。)"
- android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
- QT实现多国语言的动态切换
- Qt组件
- sqlcommand
- android getApplicationContext()与activity.this的区别
- 黑马程序员----面向对象1
- App提交审核被拒的原因汇总
- static_cast<>揭密
- java算法之身份证号码验证
- 关于ssh运行一段时间出现错误---rpc不被拦截