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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLinguist не видит созданых мной виджетов?  (Прочитано 6487 раз)
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« : Ноябрь 05, 2015, 13:23 »

Добрый день. Начал разбираться с приложением QLinguist в qt и с созданием мультиязычных приложений. Все получилось, весь интерфейс моего приложения переводится.
Только вот пока не понял как быть с собственными виджетами? QLinguist видит мои виджеты как фреймы, но не видит тех компонентов, что на них находятся. В результате
не выходит сделать перевод для этих компонентов. Неужели виджеты нужно переписовать? Или есть какой-нибудь способ заставить  QLinguist видеть мои виджеты?
QDesiner их видит.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Ноябрь 05, 2015, 13:53 »

В дизайнере есть свойство "переводимый". Может это вам поможет
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Ноябрь 05, 2015, 13:55 »

вот скрин
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #3 : Ноябрь 05, 2015, 14:18 »

спасибо, сейчас посмотрю, потом отпишусь.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #4 : Ноябрь 05, 2015, 14:32 »

Походу проблема не в этом, там по умолчанию стоит переводимый) Просто при создании виджета, я переопределил стандартный метод setText и там не использовал tr.
Заметил просто, что в некоторых моих виджетах Linguist увидел текст его компонентов. Так что больше всего проблема в том, что я неправильно переопределил метод setText внутри моего виджета.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #5 : Ноябрь 05, 2015, 15:08 »

пока увы но ничего не получается (
пробовал переписывать метод setText, следующим образом:
Код:
void MY_WIDGET::setText(QString text)
{
  if(text == text_sult) return;

  text_sult = text;
  sult_label->setText(tr(text_sult).toStdString().c_str());
}
но увы, ничего не вышло((, sult_label - это QLabel, который я создавал с кода, сам виджет тоже создан с кода, в качестве родителя указан QFrame.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #6 : Ноябрь 05, 2015, 15:10 »

сегодня вечером постараюсь скинуть небольшой пример с этим виджетом, на примере оно ж лучше видны ошибки
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Ноябрь 05, 2015, 17:18 »

tr("text_sult")
вот так увидит
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #8 : Ноябрь 13, 2015, 15:53 »

спасибо, пока забросил эту идею, просто для своих виджетов в проекте явно задаю текст в методе chengeEvent.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Ноябрь 13, 2015, 23:38 »

лингвист видит только константные строки, никакие переменные он не переведет
Записан

Изучением 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
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #10 : Ноябрь 17, 2015, 14:54 »

лингвист видит только константные строки, никакие переменные он не переведет

Я понимаю, но у них же как-то реализован перевод для всего текста, что на форме ui. Пользователь же вводит этот текст в дизайнере,
и он же сохраняется соответственно в какую-то переменную. Вот и я хотел бы этого же для собственных виджетов.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #11 : Ноябрь 17, 2015, 15:03 »

лингвист видит только константные строки, никакие переменные он не переведет

Я понимаю, но у них же как-то реализован перевод для всего текста, что на форме ui. Пользователь же вводит этот текст в дизайнере,
и он же сохраняется соответственно в какую-то переменную. Вот и я хотел бы этого же для собственных виджетов.

Из ui создается сишный класс (ui_<название_формы>.h) и в нем строки и будут.

Кусок такого сгенерированного класса:
Код
C++ (Qt)
   void retranslateUi(QDialog *Dialog)
   {
       Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
   } // retranslateUi
 
Записан

lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Ноябрь 18, 2015, 07:13 »

Пользователь же вводит этот текст в дизайнере,
и он же сохраняется соответственно в какую-то переменную.
В том-то и дело, что не в переменную, см. пример  gil9red, в нём видно, что это строковая константа - "Dialog", её выдернет программа lupdate и запишет в TS-файл, который и читает QtLinguist
Записан

Юра.
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #13 : Ноябрь 18, 2015, 16:43 »

всем спасибо за ответы, буду разбираться.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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