2017-08-16 68 views
0

我有一个应用程序的图标设置为各种点击状态的按钮,没有设置或显示实际的QPushButton文本;它全部包含在图标中。如何更改QPushButton的图标字符串基于QTranslator

这些图标文件包含需要翻译的文本,并且已经为每种语言和状态生成了。我正在寻找一种方法来使用QTranslator或QAction类来根据选定的主要语言自动选择要使用的按钮的本地化版本。

例如:

BTN_Media_Browse->setIcon(QIcon(QPixmap(tr(":/Images/BTN_Media_Browse_Unpressed.png")))); 

我按照在QT Wiki: Multi Language Application指示,但按钮不会在生成的翻译(的.ts)文件显示出来。基于语言的每个使用情况都有一个开关盒并不理想。

+0

你想整个文本,或只是其中的一部分翻译? – eyllanesc

+0

我想翻译位置文本。例如:'tr(“:/ Images/BTN_Media_Browse_Unpressed.png”)''成为'“:/Images/BTN_Media_Browse_Unpressed_en.png”'或'“:/Images/BTN_Media_Browse_Unpressed_de.png”' 为清晰起见进行了编辑。 – Nfettinger

+0

您可以通过github,驱动器,保管箱或类似软件共享您的测试代码。 – eyllanesc

回答

0

要根据用户的语言环境使用不同的图标,可以在.qrc文件中添加qresource部分的lang属性。

例如:

<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"));