当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > qt化步骤

qt化步骤 时间:2017-11-15      来源:未知

一.代码编写注意:

将需要翻译的字符串用 QObject::tr("Hello world!").  

或者QApplication::translate("Dialog", "Hello world!", 0); 包含

例如:

第一种:

lab = new QLabel(tr("trans_text","text"), this);

tr参数第一个表示翻译字符(标识),第二个为翻译提示

 

第二种(一般为UI编辑器方式):

pushButton->setText(QApplication::translate("Widget", "click", 0));

 

二.生成翻译文件

1.在pro文件中加入关键字,例如:

TRANSLATIONS += XXX/en.ts \

                XXX/zh.ts

表示要在XXX目录生成相应的翻译文件。

 

2.保存项目后运行:

菜单栏->工具->外部->Qt语言家->lupdate

相当于执行了lupdate *.pro

 

会自动在目录生成两个文件:en.ts  zh.ts

 

3.运行linguist工具加载en.ts  zh.ts两个文件并分别进行相应的翻译。

每一个翻译完了按ctrl+ENTER确认下即可。

 

4.翻译完成后运行:

菜单栏->工具->外部->Qt语言家->release

相当于执行了 lrelease *.pro

会自动在相应目录生成两个文件:en.qm  zh.qm

 

三、语言切换

1.在程序启动时候已经确定,不需要动态切换

//可定义成静态

QTranslator translator;

translator.load(Global::rootPath+Global::langPath+"zh.qm");

qApp->installTranslator(&translator);  //qApp是全局的变量

 

注意上面语句一定要在页面实例化之前。

 

2.动态语言切换:每个类重写LanguageChange事件

void XXX::changeEvent(QEvent *e)

{

    if(e->type()==QEvent::LanguageChange){  //如果是语言事件

        label->setText(tr("trans_we"));  //定义所有需要自动改变的部件

    }else{

QWidget::changeEvent(e);

}

}

 

相应的触发槽中重新加载语言文件即可,会自动触发所有对象的changeEvent事件

translator->load("XXX/zh.qm");

qApp->installTranslator(translator);  //qApp是全局的变量

上一篇:mjpg-streamer网络视频服务器移植

下一篇:c/c++使用数据库sqlite3

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部