2017-08-16 6 views
0

Ich habe eine Anwendung mit Schaltflächen, für die Symbole für die verschiedenen Klickstatus gesetzt sind, kein tatsächlicher QPushButton-Text wird festgelegt oder angezeigt; Es ist alles in dem Symbol enthalten.So ändern Sie die Symbolzeichenfolge eines QPushButtons basierend auf QTranslator

Diese Symboldateien enthalten Text, der übersetzt werden muss, und wurden für jede Sprache und jeden Status bereits generiert. Ich suche nach einer Möglichkeit, die QTranslator- oder QAction-Klasse zu verwenden, um automatisch auszuwählen, welche lokalisierte Version der Schaltfläche basierend auf der ausgewählten Hauptsprache verwendet werden soll.

Zum Beispiel:

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

Ich habe die Anweisungen auf dem QT Wiki: Multi Language Application folgte aber die Tasten zeigen nicht in der generierten Übersetzung (.ts) Dateien. Es ist nicht ideal, einen Switch-Case für jede Instanz seiner Verwendung basierend auf der Sprache zu haben.

+0

Haben Sie den gesamten Text oder nur einen Teil davon übersetzen? – eyllanesc

+0

Ich möchte den Standorttext übersetzen. Zum Beispiel: 'tr (":/Images/BTN_Media_Browse_Unpressed.png ")' wird '": /Images/BTN_Media_Browse_Unpressed_de.png "' oder '": /Images/BTN_Media_Browse_Unpressed_de.png "' Aus Gründen der Klarheit bearbeitet. – Nfettinger

+0

Sie könnten Ihren Testcode über GitHub, Drive, Dropbox oder ähnliches teilen. – eyllanesc

Antwort

0

Um verschiedene Symbole abhängig vom Gebietsschema des Benutzers zu verwenden, können Sie den Abschnitt qresource mit dem Attribut lang in Ihrer .qrc-Datei hinzufügen.

Zum Beispiel:

<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> 

Dann können Sie es mit dem Code wie folgt verwenden:

BTN_Media_Browse->setIcon(QIcon(":/Images/BTN_Media_Browse_Unpressed.png")); 
Verwandte Themen