2017-08-16 39 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"));