Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Неполная русификация QT
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
gogi
Многие классы QT содержат в своём коде статически забитый англоязычный текст.
Примеры:
- Контекстное меню QLineEdit вызываемое по щелчку правой кнопки мыши. Здесь присутствуют "Cut", "Copy" и т.д. Я даже нашёл в исходниках библиотеки то место, где эти надписи приписываются. Конечно можно в исходниках подправить на "Вырезать", "Копировать" и т.п. или же писать свой обработчик контекстного меню, но это всё кажется как-то сложно.
- QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

Наверняка найдётся и ещё куча подобного, если поискать.
Так вот, как всё это дело грамотно подправить?
void*
Цитата(gogi @ 7.7.2008, 9:42) *
QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

а ты пользуйся не статической функцией, а создай свой месседжбокс с нужными тебе кнопками и текст в них заключи в tr()...
дальше уже дело linguist'a...
Цитата(gogi @ 7.7.2008, 9:42) *
писать свой обработчик контекстного меню, но это всё кажется как-то сложно

а мне кажется что это не так уж и сложно... почти все базовые слоты есть готовенькие, тебе остается только создать само меню с экшенами и соединить их с нужными слотами
ЗЫ тем более если тебе надо в своей программе делать другое контекстное меню(что-то добавить или убрать) то тебе так или иначе придется писать свое контекстное меню
gogi
Цитата(void* @ 7.7.2008, 11:46) *
Цитата(gogi @ 7.7.2008, 9:42) *
QMessageBox::information (и другие статические функции из этого модуля) приводят к появлению диалога со стандартными кнопками "Ok", "Cancel" и т.д. Хотя могли бы эти надписи и меняться в зависимости от языка пользователя...

а ты пользуйся не статической функцией, а создай свой месседжбокс с нужными тебе кнопками и текст в них заключи в tr()...
дальше уже дело linguist'a...

Я в QMessageBox.h нашёл прототип функции
static int information(QWidget *parent, const QString &title,
                           const QString& text,
                           const QString& button0Text,
                           const QString& button1Text = QString(),
                           const QString& button2Text = QString(),
                           int defaultButtonNumber = 0,
                           int escapeButtonNumber = -1);

То, что нужно.
Странно, что она в хелпе не описана. Может быть оставлена для совместимости с ранними версиями?
Цитата(void* @ 7.7.2008, 11:46) *
Цитата(gogi @ 7.7.2008, 9:42) *
писать свой обработчик контекстного меню, но это всё кажется как-то сложно

а мне кажется что это не так уж и сложно... почти все базовые слоты есть готовенькие, тебе остается только создать само меню с экшенами и соединить их с нужными слотами
ЗЫ тем более если тебе надо в своей программе делать другое контекстное меню(что-то добавить или убрать) то тебе так или иначе придется писать свое контекстное меню

Сложно. В других библиотеках создал какой нибудь TEdit и ничего больше не надо делать. Всё стандартное поведение устраивает. А если мне надо в программе много раз использовать этот виджет? Тут надо писать либо производный класс (какой-нить QMyLineEdit в котором заменять менюшку) и из кода создавать объекты этого класса. Но тогда QT designer не запользуешь. Задача решаема-то, конечно, но неудобно.

PS Посмотрел, "болезнью" не только QLineEdit страдает, но и другие Edit'ы.
Tonal
2 gogi
Точно всё забито и не меняется?
А ты русскую локализацию Qt к проге подключать пробовал?
gogi
Tonal, разобрался уже. Я просто не знал, что такая локализация есть, пока не глянул в QTDIR/translations
Litkevich Yuriy
на самом деле, у тролей много попадается сообщений необрамленных в tr(), на прогорге этот вопрос поднимался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.