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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: русский в приложениях QT  (Прочитано 9652 раз)
Sergey B.
Гость
« : Октябрь 25, 2004, 15:13 »

Как в приложениях Qt, для динамически создаваемых виджетов организовать сделать надписи на русском?
Например
void Form1::init()
{
textEdit1->append("Привет) ;    
}

выводит Ïðèâåò, ñëàäêèé ìîé...

То же самое, для всех элементов, для кнопок и т.д.
Однако, если надписи делать в Qt Designer, то всё работает нормально!!!

Заранее благодарен...
Записан
Zmey
Гость
« Ответ #1 : Октябрь 25, 2004, 15:55 »

в main() пишешь: после QApplication app( argc, argv ); пишешь QTextCodec::setCodecForTr( QTextCodec::codecForName("utf8") );

а потом если хочишь на русском бери строку в tr(), то есть так:
extEdit1->append(tr("Привет")) ;

и не забудь в main.cpp добавить #include <qtextcodec.h>
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #2 : Октябрь 26, 2004, 10:23 »

Спасибо, всё работает...
 Веселый
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #3 : Октябрь 26, 2004, 10:30 »

Да, нашёл ещё в книге "C++ GUI Programming with Qt 3":
QTextCodec *russian =QTextCodec::codecForName("utf8");
QTextCodec::setCodecForTr(russian);

Поддерживаемые кодировки:

Apple Roman

Big5-HKSCS

CP874

CP1250

utf8

CP1252

CP1253

CP1254

CP1255

CP1256

CP1257

 
CP1258

EUC-JP

EUC-KR

GB2312

GB18030

GBK

IBM-850

IBM-866

ISO 8859-1

ISO 8859-2

ISO 8859-3

 
ISO 8859-4

ISO 8859-5

ISO 8859-6

ISO 8859-7

ISO 8859-8

ISO 8859-8-I

ISO 8859-9

ISO 8859-10

ISO 8859-11

ISO 8859-13

ISO 8859-14

 
ISO 8859-15

ISO 10646

UCS-2

JIS7

KO18-R

KOI8-U

Shift-JIS

TIS-620

TSCII

UTF-8
Записан
Alikus
Гость
« Ответ #4 : Октябрь 28, 2004, 16:53 »

Я, например,  пользуюсь в большинстве случаев QString::fromLocal8Bit("Привет!");

И все О'к! :wink:
Записан
Vilgeforce
Гость
« Ответ #5 : Декабрь 21, 2005, 12:41 »

Люди, а как быть, если разработка ведется в *nix и все недписи там на KOI8-R, а нужно и виндовую версию делать с CP-1251?

fromLocal8Bit в линухе прекрасно работает, а при переносе кода без изменений в винду мракозябры. Приведенные способы с установкой кодеков в KOI8 или 1251 не помогли.

Есть способы?
Записан
DenKor
Гость
« Ответ #6 : Декабрь 21, 2005, 13:52 »

Забивать текст в кодировке utf-8
Либо текст указывать на английском и в зависимости от системы загружать языковый файл
Записан
Vilgeforce
Гость
« Ответ #7 : Декабрь 21, 2005, 14:26 »

Цитата: "DenKor"
Забивать текст в кодировке utf-8
Либо текст указывать на английском и в зависимости от системы загружать языковый файл


Ну, уже была идея с условной компиляцией. А вот с UTF-8 - это как сделать? Можно ли средствами Дизайнера список строк сгенерить? Или в ручную придется?
Записан
Dendy
Гость
« Ответ #8 : Декабрь 21, 2005, 14:32 »

Любой текст НЕ латинскими буквами в коде - очень плохой стиль программирования на Qt.

В Qt3 ето ещё можно понять - не хотелось таскать за программой лишний файл трансляции.

В Qt4 такой проблемьl уже нет. Файл трансляции добавляет как ресурс, вкомпиливается в исполняемьlй файл и открьlвается например как:

Код:
QTranslator * translator = new QTranslator( ":/ru.qm" );


Советую рубать плохие привьlчки на корню.
Записан
Vilgeforce
Гость
« Ответ #9 : Декабрь 21, 2005, 14:41 »

Ну, у меня трешка :-(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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