当前位置: 首页 > news >正文

【大型Qt工程国际化动态更新语言不成功】

在一个大型Qt工程的国际化上遇到一个问题

首先,通过以下代码可以让当前界面的语言进行动态翻译

.h
QTranslator tran;.cpp
qApp->removeTranslator(&tran);
tran.load("XXX.qm");
qApp->installTranslator(&tran);
ui->retranslateUi(this);

但是对于一个大型Qt工程,很多情况下界面不止一个,然后就会发现只用上述代码不能让所有界面完成动态更新语言,经过探索发现,需要在其他界面中完成以下实现就可以了。

.h
protected:
virtual bool event(QEvent *e) override;.cpp
bool MyQWidget::event(QEvent *e) 
{
if(e->type() == QEvent::LanguageChange)
{ui->retranslateUi(this);
}
QWidget::event(e);
}

原因是Qt底层并没有具体实现主动更新翻译,但是会向所有界面发送一个语言更换事件,需要用户自己实现语言切换,虽然不知道为什么,但是好在这个解决方法还算简单。

总结一下就是,在所有需要动态更新语言的界面类实现以下代码

.h
protected:
virtual bool event(QEvent *e) override;.cpp
bool MyQWidget::event(QEvent *e) 
{
if(e->type() == QEvent::LanguageChange)
{ui->retranslateUi(this);
}
QWidget::event(e);
}

然后在切换某语言的槽函数中实现以下代码

.h
QTranslator tran;.cpp
qApp->removeTranslator(&tran);
tran.load("X.qm");
qApp->installTranslator(&tran);

如果保持默认语言,则调用如下代码

.h
QTranslator tran;.cpp
qApp->removeTranslator(&tran);

如与其他问题,再作探索。

http://www.dtcms.com/a/587015.html

相关文章:

  • 做的网站怎样适配手机屏幕定制网站制作报价
  • 使用cursor-free-vip时出现的错误及其解决方案
  • 【Hot100|9-LeetCode 438. 找到字符串中所有字母异位词】
  • 自已电脑做网站服务器广州平面设计
  • 个人备案网站做购物网站可以不网站建设合同应注意什么
  • 百度网站关键词手机主题如何自己制作网站
  • 网站前端开发得会什么软件小学生有没有必要学编程
  • 建站公司一般用什么框架wordpress主题添加菜单
  • 一文理清 CMake、Make、Kbuild、GCC 关系:从基础到进阶的构建工具链全解析
  • 桂林旅游网官方网站上海网站建设学校与管理中专
  • 中药饮片采购是什么?其市场动态与发展趋势如何?
  • 有做网站赚钱的吗wordpress 外网无法访问
  • 2025nessus工具最新(10.8.3)安装破解
  • 能够做物理题的网站ssh wordpress
  • 远程教育网站建设方案中建装饰集团有限公司官网
  • Go Beego 简介
  • 商城网站哪个公司做的好处泰安创意网络公司
  • 云存储能用来做网站吗券优惠网站如何做
  • 自己做网站怎样挣钱当面付 wordpress
  • SIDI模型:压力诱导的审慎到直觉决策模拟
  • 大连网站制作网站珠海网站制作计划
  • 长沙企业网站建设优度创建iis网站
  • 咨询类网站建设个人怎样做旅游网站
  • RHCE Day3 DNS服务器
  • Android15 拓展安全策略SEPOLICY
  • 有创意的网站开发wordpress免插件生成地图
  • 百度如何创建网站深圳市建筑人才网
  • 耐克运动鞋网站建设规划书框架dedecms英文外贸网站企业模板
  • Java_Collections工具类
  • 重庆做网站letide杭州网站制作外包