Russian Qt Forum
Июнь 16, 2024, 02:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Русский язык в редакторе форм под VS2003  (Прочитано 9599 раз)
LamerDrv
Гость
« : Июль 26, 2005, 08:13 »

Проблема с отображением русских букв.
Когда делаю проект на QT4.0.0 в Visual Studio херяться русский буквы в визуальных элементах (таких как QButton, QLabel).

Размещаю элемент, пишу ему caption по-русски, вроде нормально. Затем закрываю и основа открываю форму и вместо русских букв - карозяболы. При запуске проги тоже карозяболы.

Такое впечатление, что проблема вызвана использованием неправильной кодовой страницы при чтении ui-файла QT-шными утилитами. Т.е., возможно, когда при редактировании формы в VS2003 пишу русские символы используется Win1251, а при последующем открытии ui-файла для редактирования формы (или его обработке uic-ом) - используется utf-8.

Подскажите, пожалуйста, куда копать?
Записан
LamerDrv
Гость
« Ответ #1 : Июль 27, 2005, 12:40 »

Народ, неужели никто не использует Visual Studio 2003 вместе с QT.
Мне кажеться эти грабли должны лежать на поверхности, в том смысле, что на них сразу настпупаешь как только создаешь на форме виджет с русским текстом.
Редактор форм и uic действительно обрабатывают xml-ный ui-файл как utf-8. При этом русский текст записывается в этот файл как Windows-1251.

Единственный способ которым мне пока удалось добиться нормальной работы программы - это вручную преобразовать ui-файл в UTF-16 и нажать компиляцию. Но это не годиться, потому что как только открываешь форму в редакторе и сохраняешь - ui-файл опять становится utf-8. Включить в файл явное указание кодировки нельзя, потому что uic ожидает, что самым первым тэгом дложен быть "ui version".

Интересно как заставить редактор форм помещать национальные символы в ui-файл в правильной кодировке?
Помоги-и-и-те-е-е ! Пожалуйста.
Записан
KOSchMAR
Гость
« Ответ #2 : Июль 27, 2005, 15:32 »

Цитировать
Народ, неужели никто не использует Visual Studio 2003 вместе с QT.


2003 то используют  , но на QT4 перешли не все
 Visual Studio 2003  c QT 3.3.3 все нормально
Записан
LamerDrv
Гость
« Ответ #3 : Июль 28, 2005, 15:46 »

Так вообще у кого-нибудь редактор форм интегрированный в Visual Studio обрабатывает нормально русский текст? (Я имею ввиду интегратор от QT4 ). Или народ использует отдельный дизайнер?

Пока что из-за желания делать проект польностью в Visual Studio (включая рисование форм) пришлось патчить. Но все еще надеюсь что есть нормальный (в смысле штатный способ) разрулить работу с русским языком.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Июль 28, 2005, 17:50 »

А если ГУИ на инглише делать, а потом в Лингвисте ленгвич-паки лабать?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
LamerDrv
Гость
« Ответ #5 : Июль 29, 2005, 07:22 »

Цитата: "Racheengel"
А если ГУИ на инглише делать, а потом в Лингвисте ленгвич-паки лабать?


Тогда, конечно, все будет нормально. Но, очень не хочется делать двухязыковой интерфейс, сейчас не стоит такая задача (хотя это, конечно, полезно для общего развития). А даже если такая задача и появится, хотелось бы изначально делать русский, а уж потом в Лингвисте английский ленгвич-пак слабать. Все-таки думаю я по-русски  Улыбающийся .

З.Ы:
Пока что пришлось сделать специальную версию qtcore4.dll, в которой реализация QTextStream по-дефолту выполняет перекодировку в utf8 и положить эту dll-ку в подкаталог bin интегратора. Вроде стало нормально. (Designer.exe выполняет такую перкодировку явно при сохранении ui-файла. А вот в интеграторе, если дизассемблер не врет, это сделать забыли). Если если кому-нибудь надо ...
Записан
SLiDER
Гость
« Ответ #6 : Июль 29, 2005, 21:00 »

Я бы, в принципе, не отказался от такой ДЛЛки. Крутой
Записан
LamerDrv
Гость
« Ответ #7 : Июль 30, 2005, 08:44 »

Цитата: "SLiDER"
Я бы, в принципе, не отказался от такой ДЛЛки. Крутой


Ловите.  :wink:

В конец конструктора  QTextStream::QTextStream ( QIODevice * device ) я добавил строки (в файле qtextstream.cpp):

    if (device->openMode() == QIODevice::WriteOnly)
        setCodec(QTextCodec::codecForName("UTF-8"));

После вносения указанного изменения, пересобрал qtcore4.dll (запускал qmake и namke из папки <QTDIR>\src\corelib, чтобы пересобрать только qtcore4.dll, а не все dll-ки). Скопировал  полученную qtcore4.dll  из <QTDIR>\bin в интегратор
(в директории <QTDIR>\bin восстановил оригинальную версию qtcore4.dll).
Суть патча в том, что если входной параметр device представляет
утсройство открытое в режиме только для записи то для устанавливается текстовог потока принудительно задается кодек utf-8.

З.Ы.: В принципе могу выслать готовую dll-ку.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.109 секунд. Запросов: 22.