QString и русские символы

Автор: kiz Дата: 04.11.2003 18:16 Хело all.
Вопрос такой, с помощью QTDesigner создал форму, на ней лежит компонент KLineEdit1. Подключаю её к своему проекту и пишу код вроде:

QString myStr=KLineEdit1->text();
if (myStr[0]=='q') ...

Если вместо q подствить любую другую английскую букву всё будет работать, а вот на русские буквы не реагирует Смущенный Как это поправить ? Может там в чего-то перобразовывать надо ? Или как-нибудь читать не буквы, а что-то вроде ascii кодов (или как оно тут называется)
Re: QString и русские символы 05.11.2003 05:05olkv Я делаю следующим образом.

1. В main.cpp устанавливаю кодовую таблицу WIN-1251, использую объект
QTextCodec

2. А далее для преобразованиюя использую функции :

s = tr( [строка] );
s = [строка].local8Bit();
Re: QString и русские символы 05.11.2003 16:46kiz Ок. Нашёл такое в доках, посмотрю. Tnx Улыбка
Re: QString и русские символы 06.11.2003 23:42kiz Слушай, опиши подробнее, как ты это делаешь, а то я чего-то пробовал, пробовал - не получается. Вот кусок кода:
---
QCString inputStr=(QCString)KLineEdit1->text();
QTextCodec *codec = QTextCodec::codecForName("CP1251";-);
QString unicodeStr = codec->toUnicode( inputStr );

if (unicodeStr==tr("тест";-)) qWarning("ok";-);// пробовал tr(..) убирать -тоже не пашет
---
Ну тут ещё пробовал разные вариации на ту же тему - тоже не работает.
Re: QString и русские символы 07.11.2003 01:50XMan Может я чего не знаю, но "tr(...)" всегда использовался для локализации. То есть, для того, чтобы вместо "Cancel" в кнопке отображалось "Отмена" при наличии соответствующего файла локализации Улыбка

Тем более, кодом "codec->toUnicode( inputStr );" ты загоняешь юникод в еще один юникод Улыбка

А вот подобную конструкцию пробовал:

if (QTextCodec::codecForName("CP1251";-)->fromUnicode(KLineEdit1->text()).data() == "тест";-) qWarning("ok";-);

? Или вот такую:

if (KLineEdit1->text() == QTextCodec::codecForName("CP1251";-)->toUnicode("тест";-)) qWarning("ok";-);

?
Re: QString и русские символы 08.11.2003 17:14kiz Большое tnx. Последняя строчка заработала на ура! Улыбка
Re: QString и русские символы 08.11.2003 18:41XMan Вопрос - а почему именно CP1251 ? Почему не использовать "codecForLocale()" ?
Re: QString и русские символы 13.11.2003 21:40kiz Хи, codecForLocale() это тоже мысль Улыбка Просто я кусок кода из какого-то руководства выдрал (там правда не про cp1251 было)
Re: QString и русские символы 13.11.2003 22:27XMan А теперь еще один встречный вопрос - нафига вообще кодек, если ты кодировки не преобразуешь ?
Почему не сделать так:

if (KLineEdit1->text() == QString::fromLocal8Bit("тест";-)) qWarning("ok";-);

? Прекрасно работает Улыбка
RSS-материал