crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Кривое отображение русского текста при печати
Rocky
  опции профиля:
сообщение 12.7.2010, 12:25
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Всем привет! Помогите плиз разобраться... Дня 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
  опции профиля:
сообщение 12.7.2010, 13:36
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


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

то на 1 и 2 вкладках прямо в отладчике вижу, что в s записались квадратики.... А на 3-й все ок... Получается что что-то не то с кодировкой исходника чтоли? Кодеки выставляются только один раз.. При загрузке программы.. Странно как-то все.

Сообщение отредактировал Rocky - 12.7.2010, 13:37
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.7.2010, 19:56
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(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("текст");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 12.7.2010, 22:44
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


Да простят меня более опытные сотоварищ, я делаю так... QString str = tr("траляля");, вопщем везде вместо "" пишу tr("");
так что если стоит QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
то должно быть корректно...
Убедись что все исходники в одной кодировке и пересобирите проект... хотя, наверное вы это уже делали...
можете прислать исходники попробую собрать у себя
Удачи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 12.7.2010, 22:56
Сообщение #5


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


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

Всё в латинице. То что нуждается в переводе оборачивается в tr, если не нуждается в QLatin1String. При этом выставляю QT_NO_CAST_FROM_ASCII, что бы сразу получать по рукам если где-то забыл обернуть
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 15.7.2010, 11:08
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Спасибо за trUtf8, на будующее буду знать. Разобрался так: взял файл (3-й таб) в котором после компиляции все было ок, и скопировал туда текст из файла с таб 1 и 2. После этого все заработало. Что-то было не так в самом формате файла... Правда что фиг его знает. =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 1:01