Qt 语言家实现中英文切换(解决纯代码添加部件的中英文转换问题)

Qt 语言家实现中英文切换(解决纯代码添加部件的中英文转换问题)

关于.ts和.qm文件的生成,更新翻译、发布翻译等步骤就不多说了,其他博主有大量的描述。
现在我要解决的是中英文未完全转换的问题如下图:
在这里插入图片描述
如上图所示,显示中文页面,没有问题,再看下图:
在这里插入图片描述
此时我已经转换成英文了,可以看到中英文转换按钮下面的选项还是中文,并未转换过来,究其原因就是这个按钮我是用纯代码编写的,并未使用UI设计拖拽,而在实际项目中,并非所有的部件都可以拖拽!

而纯代码编写的部件名称,即使加上了tr();也没有用,经过参考 一去、二三里 的一个资源,经过多次测试,找到了上面问题的原因:少添加了一个保护继承的函数

void mywidget::changeEvent(QEvent *event)
{
    switch (event->type())
    {
    case QEvent::LanguageChange:
        translateUI();
        break;
    default:
        QWidget::changeEvent(event);
    }
}

而中间的translateUI()函数就是给所需要中英文转换的部件添加名字,

void MainWidget::translateUI()
{
	this->setWindowTitle(tr("main widget"));
    welcome_label->setText(tr("welcome to Qt") + QString("26197884/26188347"));
	setting_button->setText(tr("setting"));
	ok_button->setText(tr("ok"));
	cancel_button->setText(tr("cancel"));
}

这样还不能解决上面的问题,还需要一步:在main.cpp中添加引用.qm文件的代码,并把指针传给指定类中:

QApplication app(argc, argv);

QTranslator translator;
translator.load(QString(":/qm/main_widget_") + "en");
app.installTranslator(&translator);

MainWidget main_widget;
//将translator传到main_widget中
main_widget.setTranslator(&translator);
main_widget.show();

经过上述三个步骤应该解决了这个问题
文笔不周之处,多多包涵,如有错误,多谢指正!

参考链接:
TranslateLanguage

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值