1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Qt 语言家实现中英文切换(解决纯代码添加部件的中英文转换问题)

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

时间:2023-07-13 14:45:32

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。