Как изменить строку значков QPushButton на основе QTranslator
У меня есть приложение с кнопками, для которых установлены значки для различных состояний щелчка, фактический текст QPushButton не установлен и не отображается; все это содержится в значке.
Эти файлы значков содержат текст, который требует перевода, и уже созданы для каждого языка и штата. Я ищу способ использования класса QTranslator или QAction для автоматического выбора локализованной версии кнопки для использования на основе выбранного основного языка.
Например:
BTN_Media_Browse->setIcon(QIcon(QPixmap(tr(":/Images/BTN_Media_Browse_Unpressed.png"))));
Я следовал инструкциям на QT Wiki: Многоязычное приложение, но кнопки не отображаются в сгенерированных файлах перевода (.ts). Наличие переключателя для каждого экземпляра его использования на основе языка не является идеальным.
1 ответ
Чтобы использовать разные значки в зависимости от локали пользователя, вы можете добавить qresource
раздел с lang
атрибут в вашем файле.qrc.
Например:
<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"));