如何从应用程序中删除所有 QTranslator?
Posted
技术标签:
【中文标题】如何从应用程序中删除所有 QTranslator?【英文标题】:How can I remove all QTranslator from the app? 【发布时间】:2017-09-04 14:51:34 【问题描述】:我想使用 QCoreApplication::installTranslator
更改语言,并为每种语言使用几个不同的 .qm
文件(项目的不同部分导致不同的 .qm 文件)。
可以使用多个 .qm 文件:
QCoreApplication::installTranslator(QTranslator *translationFile) 可以安装多个翻译文件。搜索翻译 因为它们的安装顺序相反,所以最 最近安装的翻译文件首先搜索 最后搜索安装的翻译文件。
但是,如果我不remove 年长的翻译人员,他们仍然是翻译的候选人。即使他们是最近安装较少的翻译器。
如何在加载所需文件之前清除之前加载的任何文件?
我看到的唯一方法是保留我安装的指针,并在我想更改时将它们一一删除,但是有没有更直接的方法?
【问题讨论】:
您可以显示您注释的代码以便更好地理解。 只需维护一些旧译者的列表。或者使用一些共同的父母(它可以是一些虚拟的QObject
)来维护它。在这种情况下,您将能够删除相应的翻译。我不认为这应该是个问题。
@MarekR 不是,但是让 QApp 这样做会很方便,因为它已经知道您安装的翻译器,它可以只清除其私人翻译器列表,而不是让我删除他们一个接一个。
【参考方案1】:
我维护了已安装翻译器的列表:
// 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();
【讨论】:
以上是关于如何从应用程序中删除所有 QTranslator?的主要内容,如果未能解决你的问题,请参考以下文章
如何基于 QTranslator 更改 QPushButton 的图标字符串
为啥我需要一个 QTranslator 来在 Windows 上的 QMessageBox 中本地化按钮文本?