Russian Qt Forum
Ноябрь 22, 2024, 15:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSS и смена языка  (Прочитано 5452 раз)
qtnoob1k
Гость
« : Март 10, 2012, 22:44 »

Всем привет! Например есть кнопка с QSS:
Код:
QPushButton
{
    border-image: url(:/my/button_en.png);
}
Я бы хотел, что бы при смене языка button_en.png заменялся на button_ru.png. Есть ли в Qt простой способ сделать это?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Март 11, 2012, 01:06 »

единственный способ - это руками. хранишь в программе текующую локализацию в виде строки (например en) и все пути к ресурсам делаешь через этот параметр, например
Код
C++ (Qt)
setStyleSheet(QString("...border-image: url(:/my/button_%1.png);...").arg(currentLocale)
при смене языка явно говоришь программе перечитать все ресурсы, зависящие от языка.

только лучше локализованные ресурсы хранить в отдельных папках как по мне, чтоб пути выглядели url(:/my/%1/button.png)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Март 11, 2012, 02:11 »

надписи на кнопках всё-таки лучше делать текстом, тогда их можно перевести обычным способом
Записан
qtnoob1k
Гость
« Ответ #3 : Март 11, 2012, 10:09 »

единственный способ - это руками. хранишь в программе текующую локализацию в виде строки (например en) и все пути к ресурсам делаешь через этот параметр, например
Код
C++ (Qt)
setStyleSheet(QString("...border-image: url(:/my/button_%1.png);...").arg(currentLocale)
при смене языка явно говоришь программе перечитать все ресурсы, зависящие от языка.
Спасибо, так и сделал, что удивило, что в Qt Creator в редакторе QSS нельзя поставить %. Пишет, что это невалидный код. Поэтому пришлось использовать QString::replace.
Я так понимаю, что если в ресурсы добавить изображений с lang=ru_Ru например, то они подхватятся при загрузке окна? Если так, то может возможно вызвать этот же код динамически? Никто не смотрел, что там внутри вызывается?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 22.