LINUX.ORG.RU

qt5 и кириллица

 ,


0

1

Доброго всем времени суток.

В qt4 работал такой метод преобразования кодировок

QTextCodec * codec;
codec = QTextCodec::codecForName("cp1251 или utf-8 или ...");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);
потом просто через tr(«нужный текст на русском») устанавливался. Теперь в qt5 не могу просто на кнопке по русски надпись сделать. Подскажите куда копать

setCodecForTr выпилили.

Теперь либо то, что предложил Kosyak, либо перевести все исходники в utf8.

alpha4
()
Последнее исправление: alpha4 (всего исправлений: 1)

Забить и использовать utf-8 не вариант? Или ты Эдди?

buddhist ★★★★★
()

В Qt5 исходники понимаются как UTF-8. Добро пожаловать в 21 век.

anonymous
()

Кириллица в исходниках? Но зачем? И в Qt4 и Qt5 самый верный вариант описал Kosyak.

totik
()
3 апреля 2015 г.

Та же беда после перехода на Qt5. Не подскажите как собсно конвертировать QString(unicode) в std::string, если убрали setCodecForCStrings?

Bleach
()
Ответ на: комментарий от Bleach
//##########################
//### это дописать в main ###
//##########################
//set translator for default widget's text (for example: QMessageBox's buttons)
QTranslator qtTranslator;
bool b1 = qtTranslator.load("qt_ru",a.applicationDirPath()+"/translators");
a.installTranslator(&qtTranslator);

QTranslator translator;
bool b = translator.load(a.applicationDirPath()+"/translators/ru");
a.installTranslator(&translator);
//######################################

//##################################
//### это в нужной части программы ###
//##################################
QTextCodec * codec;
codec = QTextCodec::codecForName("Windows-1251");
QString str1=codec->toUnicode(tr("Текст в виндовой кодировке"));
QString str2("");
str2.append(codec->fromUnicode(tr("unicode текст")));

потом в creatore надо выбрать инструменты->внешние->linguist->создать переводы. После этого внизу, в выводе приложения будет информация что создано. Далее открываете linguist и переводите фразы, которые в tr. (Я обычно всё пишу на английском потом перевожу). Потом сохраняете и компилируете.

не забудьте назвать файл переводов как указали его для транслятора в мэйне, и перекинуть его туда

seijuurou
() автор топика
Ответ на: комментарий от seijuurou

Спасибо, уже разобрался. Проблема была в том что в MSVC2010 в дебагере абракадабра отображалась, хотя перевод и был корректен. И да можно и так: QString qs; ... std::string str = qs.toUtf8.constData();

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.