如何基于 QTranslator 更改 QPushButton 的图标字符串
Posted
技术标签:
【中文标题】如何基于 QTranslator 更改 QPushButton 的图标字符串【英文标题】:How to change a QPushButton's Icon String based on QTranslator 【发布时间】:2017-08-16 20:18:43 【问题描述】:我有一个带有按钮的应用程序,这些按钮为各种点击状态设置了图标,没有设置或显示实际的 QPushButton 文本;它都包含在图标中。
这些图标文件包含需要翻译的文本,并且已经为每种语言和状态生成。我正在寻找一种方法来使用 QTranslator 或 QAction 类来根据所选的主要语言自动选择要使用的按钮的本地化版本。
例如:
BTN_Media_Browse->setIcon(QIcon(QPixmap(tr(":/Images/BTN_Media_Browse_Unpressed.png"))));
我已按照QT Wiki: Multi Language Application 上的说明进行操作,但按钮未显示在生成的翻译 (.ts) 文件中。根据语言为每个使用实例设置一个 switch case 并不理想。
【问题讨论】:
您要翻译整个文本还是只翻译一部分? 我想翻译位置文本。例如:tr(":/Images/BTN_Media_Browse_Unpressed.png")
变为 ":/Images/BTN_Media_Browse_Unpressed_en.png"
或 ":/Images/BTN_Media_Browse_Unpressed_de.png"
为清楚起见进行了编辑。
您可以通过 github、drive、dropbox 或类似的方式分享您的测试代码。
您可以使用 .qrc 文件。请参阅Qt 资源系统 主题。例如:<qresource> <file>cut.jpg</file> </qresource> <qresource lang="fr"> <file alias="cut.jpg">cut_fr.jpg</file> </qresource>
这非常有效。请提供此作为答案,以便我接受。可能值得为像我这样困惑的其他人添加更多说明或链接。
【参考方案1】:
要根据用户的区域设置使用不同的图标,您可以在 .qrc 文件中添加带有 lang
属性的 qresource
部分。
例如:
<qresource>
...
<file alias="Images/BTN_Media_Browse_Unpressed.png">Images/BTN_Media_Browse_Unpressed_en.png</file>
...
</qresource>
<qresource lang="de">
...
<file alias="Images/BTN_Media_Browse_Unpressed.png">Images/BTN_Media_Browse_Unpressed_de.png</file>
...
</qresource>
然后你可以用这样的代码来使用它:
BTN_Media_Browse->setIcon(QIcon(":/Images/BTN_Media_Browse_Unpressed.png"));
【讨论】:
以上是关于如何基于 QTranslator 更改 QPushButton 的图标字符串的主要内容,如果未能解决你的问题,请参考以下文章