Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кривое отображение русского текста при печати
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
Rocky
Всем привет! Помогите плиз разобраться... Дня 3 сижу и ниче не понимаю.. Есть проект. Все исходники сохранены в кодировке UTF-8. В проекте 3 вкладки (tabwidget). На каждой вкладке есть кнопка "бланк" с которой можно распечатать определенные данные. Печатаю так
QPainter* pPainter;

pPainter->drawText(oRect.left() + 1 * nCellWidth + 5, 2 * nCellHeight - 5, QString("воздуха в помещениях,°С"));


При загрузке проекта пишу
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());


В итоге на первых двух вкладках вместо русских букв вижу одни квадратики, на 3-й вкладке - все ок. Файлы с исходниками сохранены в UTF-8. Вместо QString("текст") пробовал qApp->tr(""), QString("текст").toAscii(), QString("текст").toStdString().c_str() - при всех вариантах вижу квадратики... В чем могут быть грабли? Qt 4.6.2. + vs 2008.

Спасибо!

Rocky
Т.е. даже если я просто в коде пишу такую строку
QString s = qApp->tr("текст");

то на 1 и 2 вкладках прямо в отладчике вижу, что в s записались квадратики.... А на 3-й все ок... Получается что что-то не то с кодировкой исходника чтоли? Кодеки выставляются только один раз.. При загрузке программы.. Странно как-то все.
Litkevich Yuriy
Цитата(Rocky @ 12.7.2010, 16:25) *
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Цитата(Rocky @ 12.7.2010, 16:25) *
QString("воздуха в помещениях,°С")
Цитата(Rocky @ 12.7.2010, 16:25) *
Все исходники сохранены в кодировке UTF-8
не соответствие

Если исходники в UTF-8, то просто оборачивай текст в trUtf8, например:
QString s = trUtf8("текст");
ЙаМайскЫйПчОЛ
Да простят меня более опытные сотоварищ, я делаю так... QString str = tr("траляля");, вопщем везде вместо "" пишу tr("");
так что если стоит QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
то должно быть корректно...
Убедись что все исходники в одной кодировке и пересобирите проект... хотя, наверное вы это уже делали...
можете прислать исходники попробую собрать у себя
Удачи
igor_bogomolov
Цитата(ЙаМайскЫйПчОЛ)
Да простят меня более опытные сотоварищ, я делаю так... QString str = tr("траляля");, вопщем везде вместо "" пишу tr("");
Я стараюсь так не делать. И так тоже
Цитата(Litkevich Yuriy)
QString s = trUtf8("текст");

Всё в латинице. То что нуждается в переводе оборачивается в tr, если не нуждается в QLatin1String. При этом выставляю QT_NO_CAST_FROM_ASCII, что бы сразу получать по рукам если где-то забыл обернуть
Rocky
Спасибо за trUtf8, на будующее буду знать. Разобрался так: взял файл (3-й таб) в котором после компиляции все было ок, и скопировал туда текст из файла с таб 1 и 2. После этого все заработало. Что-то было не так в самом формате файла... Правда что фиг его знает. =(
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.