如何从应用程序中删除所有QTranslator?

时间:2017-09-04 14:51:35

标签: qt qtranslator

我希望使用QCoreApplication::installTranslator更改语言,并为每种语言使用几个不同的.qm文件(项目的不同部分会生成不同的.qm文件)。

可以使用多个.qm文件:

  

QCoreApplication::installTranslator(QTranslator *translationFile)
  可以安装多个翻译文件。搜索翻译   因为它们安装的顺序相反,所以最多   首先搜索最近安装的翻译文件   最后搜索安装的翻译文件。

但是,如果我没有remove年长的译员,他们仍然是翻译的候选人。即使他们是最近安装的翻译人员。

如何在加载想要的文件之前清除之前加载的文件?

我看到的唯一方法就是保留我安装的指针并在我想要更改时逐一删除它们,但是有更直接的东西吗?

1 个答案:

答案 0 :(得分:0)

我维护已安装的译员列表:

// Install the translators
for (auto fileName : qAsConst(fileList)) {
    auto translator = QSharedPointer<QTranslator>::create();
    translator->load(fileName);

    m_currentTranslators << translator;
    QCoreApplication::installTranslator(translator.data());
}

并将它们全部删除:

for (auto translator : qAsConst(m_currentTranslators)) {
    QCoreApplication::removeTranslator(translator.data());
}
m_currentTranslators.clear();