Как изменить строку значков 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"));
Другие вопросы по тегам