Название: Работа оператора tr Отправлено: ruzik от Март 04, 2011, 20:47 Здравствуйте, возникла такая проблема:
У меня есть класс, который располагается в файлах h+cpp И в cpp в реализации одной функции есть такая строчка if(tableWidget->item(a,3)->text()==tr("Yes")) И у меня не хочет определять оператор tr, а что подключить я не знаю По смыслу надо QtCore, но не помогает пробовал и QtGui, хотя он тут вообще не при чем Хотя в обычном проекте все работает нормально, смотрел в дизайнере что там подключается, ничего интересного не нашел, в pro файле то же ничего Я знаю что дело макросе Q_OBJECT, но если его поставить то придется наследовать мой класс от QOBject, что возможно, но не желательно, так как я не пользуюсь не одной из функций QOBject, и КПД упадет, можно ли как-то сделать это избегая наследования Название: Re: Работа оператора tr Отправлено: kuzulis от Март 04, 2011, 21:03 Код
Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 04, 2011, 21:32 tr() - static член QObject
Код
Название: Re: Работа оператора tr Отправлено: lit-uriy от Март 04, 2011, 21:40 >>оператор tr
это не оператор, а функция. Если ты её используешь не внутри класса, который унаследован от QObject, то поступать нужно, как сказал Fat-Zer Название: Re: Работа оператора tr Отправлено: pastor от Март 04, 2011, 21:44 Решение Fat-Zer работать небудет.
Юзай QT_TR_NOOP, QT_TRANSLATE_NOOP, qApp->translate(...) Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 04, 2011, 21:58 Решение Fat-Zer работать небудет. можно узнать почему?Название: Re: Работа оператора tr Отправлено: Sancho_s_rancho от Март 04, 2011, 22:16 Насколько я помню классы без макроса Q_OBJECT опускаются и вызов статического метода тут не поможет.
Название: Re: Работа оператора tr Отправлено: pastor от Март 04, 2011, 23:20 можно узнать почему? А подумай, каким образом будет осуществлен перевод? Посомтри для интереса код tr. Думаю после просомтра кода станет все понятно. Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 04, 2011, 23:48 А подумай, каким образом будет осуществлен перевод? Посомтри для интереса код tr. Думаю после просомтра кода станет все понятно. чего-то я вообще определение tr() не наблюдаю ::)нашёл только это: Код можете тыкнуть носом? Название: Re: Работа оператора tr Отправлено: pastor от Март 04, 2011, 23:55 Посомтри в qobjectdefs.h
QT_TR_FUNCTIONS Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 05, 2011, 00:18 Код в итоге вызов уходит туда же куда и qApp>translate(...), предложенный вами ещё не очень понимаю, как работают эти макросы: Код
Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 05, 2011, 00:26 ещё пример от троллей: http://doc.qt.nokia.com/4.7/linguist-hellotr.html
Название: Re: Работа оператора tr Отправлено: pastor от Март 05, 2011, 01:18 http://doc.qt.nokia.com/4.7/internationalization.html
Цитировать If the quoted text is not in a member function of a QObject subclass, use either the tr() function of an appropriate class, or the QCoreApplication::translate() function directly. Цитировать If you need to have translatable text completely outside a function, there are two macros to help: QT_TR_NOOP() and QT_TRANSLATE_NOOP(). They merely mark the text for extraction by the lupdate utility described below. The macros expand to just the text (without the context). Название: Re: Работа оператора tr Отправлено: Fat-Zer от Март 05, 2011, 01:30 Цитировать If the quoted text is not in a member function of a QObject subclass, use either the tr() function of an appropriate class, or the QCoreApplication::translate() function directly. Название: Re: Работа оператора tr Отправлено: pastor от Март 05, 2011, 04:22 Да, состряпал пример простенький, действительно работает на 4.7.1. Приношу свои извенения, был неправ.
ЗЫ: Помниться когдато были проблемы с интернационализацей строк, которые находились "извне" QObject. И была именно описаная выше ситуация. Название: Re: Работа оператора tr Отправлено: ruzik от Март 05, 2011, 14:46 Всем большое спасибо!
|