Название: Русский текст на QGraphicsView. Отправлено: solo700 от Май 12, 2010, 02:27 Не могу вывести русский текст на QGraphicsView. Установил кодировку:
QTextCodec *rusCodec = QTextCodec::codecForName("CP1251"); QTextCodec::setCodecForTr(rusCodec); QTextCodec::setCodecForCStrings(rusCodec); Далее вывожу на QGraphicsView : QGraphicsTextItem *blinkTextItem; ... blinkTextItem=addText(str); Выводится абракадабра. Помогите пожалуйста. Название: Re: Русский текст на QGraphicsView. Отправлено: lit-uriy от Май 12, 2010, 05:44 а str как заполняешь?
Название: Re: Русский текст на QGraphicsView. Отправлено: jack_r от Май 12, 2010, 10:15 Какая кодировка в редакторе?
Что если поставить кодировку в редакторе UTF-8 и установить такое же кодек в программе? Код: QTextCodec *rusCodec = QTextCodec::codecForName("UTF-8"); Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 12, 2010, 14:20 Цитировать а str как заполняешь? Как только не заполнял : str=tr("Старт 555"); str="Старт 555"; blinkTextItem=addText(str); blinkTextItem=addText(tr(str)); Цитировать QTextCodec *rusCodec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(rusCodec); QTextCodec::setCodecForCStrings(rusCodec); Кодировку в редакторе менял на System, CP1251, KOI8-R, UTF-8 Выставлял аналогичный кодек - результата никакого. Название: Re: Русский текст на QGraphicsView. Отправлено: ufna от Май 12, 2010, 14:52 попробуй QTextCodec::codecForName("Windows-1251");
Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 12, 2010, 15:19 Цитировать Что если поставить кодировку в редакторе UTF-8 и установить такое же кодек в программе? Проект создавался в System. Там полно русских комментов. Если в редакторе установить UTF-8, то при перезагрузки проекта Qt Creator не сможет перекодировать всё это. Придется перелапачивать ручками, что не есть гуд. Цитировать попробуй QTextCodec::codecForName("Windows-1251"); Не работает. Прям засада какая то. В принципе заполнение строк из редактора это в качестве примера сделал ... и охренел. Заполнение будет из файлов. Думаю там я разберусь. Но вопрос какой то страшно принципиальный. Название: Re: Русский текст на QGraphicsView. Отправлено: lit-uriy от Май 12, 2010, 23:50 русские коменты при какой кодировке правильно отображаются? Т.е. с начало надо наверняка выяснить кодировку самого файла с исходным кодом.
Самый переносимый вариант, конечно, писать все строковые литералы по аглицки. Затем лингвистом сделать их перевод и подгрузить к программе. Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 13, 2010, 01:43 Цитировать русские коменты при какой кодировке правильно отображаются? Т.е. с начало надо наверняка выяснить кодировку самого файла с исходным кодом. Проект параллельно ведется на виндах и линухе (точнее по одному на каждой системе). В виндах кодировка System в линухе CP1251. Обновляются последние измененные файлы (хидеры, исходники, формы - файлы проектов естественно не трогаются). Всё корректно отображается и работает. Текст на GraphicsView одинаково коряво отображается и в виндах и линухе. Кстати интересный момент ... Код: void KViewFlasher::drawBackground(QPainter *painter, const QRectF &rect) Но очень хотелось бы побороть коллекцию сцены. Название: Re: Русский текст на QGraphicsView. Отправлено: lit-uriy от Май 13, 2010, 13:44 >>Этот вариант работает нормально во всех системах.
этот вариант работает благодаря QTextCodec::setCodecForCStrings(rusCodec); попробуй этот же код, только строку оберни в tr() при этом кодек для tr должен быть такой как написал ufna, т.е.: QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 13, 2010, 17:08 Цитировать QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); Это я уже пробовал. Не работает. Название: Re: Русский текст на QGraphicsView. Отправлено: lit-uriy от Май 13, 2010, 20:59 >>Это я уже пробовал.
А при этом строку в tr() оборачивал? Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 14, 2010, 00:21 Цитировать А при этом строку в tr() оборачивал? оборачивал Код: QTextCodec *rusCodec = QTextCodec::codecForName("Windows-1251"); // в функции main абракадабра Название: Re: Русский текст на QGraphicsView. Отправлено: solo700 от Май 14, 2010, 03:10 Добил сцену.
Неработающий вариант этот : Код: int main(int argc, char *argv[]) Работающий вариант этот: Код: int main(int argc, char *argv[]) Всем спасибо ! |