Russian Qt Forum

Qt => Вопросы новичков => Тема начата: billy4685 от Ноябрь 05, 2015, 13:23



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


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: __Heaven__ от Ноябрь 05, 2015, 13:53
В дизайнере есть свойство "переводимый". Может это вам поможет


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: __Heaven__ от Ноябрь 05, 2015, 13:55
вот скрин


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 05, 2015, 14:18
спасибо, сейчас посмотрю, потом отпишусь.


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 05, 2015, 14:32
Походу проблема не в этом, там по умолчанию стоит переводимый) Просто при создании виджета, я переопределил стандартный метод setText и там не использовал tr.
Заметил просто, что в некоторых моих виджетах Linguist увидел текст его компонентов. Так что больше всего проблема в том, что я неправильно переопределил метод setText внутри моего виджета.


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 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.


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 05, 2015, 15:10
сегодня вечером постараюсь скинуть небольшой пример с этим виджетом, на примере оно ж лучше видны ошибки


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: __Heaven__ от Ноябрь 05, 2015, 17:18
tr("text_sult")
вот так увидит


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 13, 2015, 15:53
спасибо, пока забросил эту идею, просто для своих виджетов в проекте явно задаю текст в методе chengeEvent.


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: kambala от Ноябрь 13, 2015, 23:38
лингвист видит только константные строки, никакие переменные он не переведет


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 17, 2015, 14:54
лингвист видит только константные строки, никакие переменные он не переведет

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


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: gil9red от Ноябрь 17, 2015, 15:03
лингвист видит только константные строки, никакие переменные он не переведет

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

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

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


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: lit-uriy от Ноябрь 18, 2015, 07:13
Пользователь же вводит этот текст в дизайнере,
и он же сохраняется соответственно в какую-то переменную.
В том-то и дело, что не в переменную, см. пример  gil9red, в нём видно, что это строковая константа - "Dialog", её выдернет программа lupdate и запишет в TS-файл, который и читает QtLinguist


Название: Re: QLinguist не видит созданых мной виджетов?
Отправлено: billy4685 от Ноябрь 18, 2015, 16:43
всем спасибо за ответы, буду разбираться.