Название: Русский язык в редакторе форм под VS2003 Отправлено: LamerDrv от Июль 26, 2005, 08:13 Проблема с отображением русских букв.
Когда делаю проект на QT4.0.0 в Visual Studio херяться русский буквы в визуальных элементах (таких как QButton, QLabel). Размещаю элемент, пишу ему caption по-русски, вроде нормально. Затем закрываю и основа открываю форму и вместо русских букв - карозяболы. При запуске проги тоже карозяболы. Такое впечатление, что проблема вызвана использованием неправильной кодовой страницы при чтении ui-файла QT-шными утилитами. Т.е., возможно, когда при редактировании формы в VS2003 пишу русские символы используется Win1251, а при последующем открытии ui-файла для редактирования формы (или его обработке uic-ом) - используется utf-8. Подскажите, пожалуйста, куда копать? Название: Русский язык в редакторе форм под VS2003 Отправлено: LamerDrv от Июль 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-файл в правильной кодировке? Помоги-и-и-те-е-е ! Пожалуйста. Название: Русский язык в редакторе форм под VS2003 Отправлено: KOSchMAR от Июль 27, 2005, 15:32 Цитировать Народ, неужели никто не использует Visual Studio 2003 вместе с QT. 2003 то используют , но на QT4 перешли не все Visual Studio 2003 c QT 3.3.3 все нормально Название: Русский язык в редакторе форм под VS2003 Отправлено: LamerDrv от Июль 28, 2005, 15:46 Так вообще у кого-нибудь редактор форм интегрированный в Visual Studio обрабатывает нормально русский текст? (Я имею ввиду интегратор от QT4 ). Или народ использует отдельный дизайнер?
Пока что из-за желания делать проект польностью в Visual Studio (включая рисование форм) пришлось патчить. Но все еще надеюсь что есть нормальный (в смысле штатный способ) разрулить работу с русским языком. Название: Русский язык в редакторе форм под VS2003 Отправлено: Racheengel от Июль 28, 2005, 17:50 А если ГУИ на инглише делать, а потом в Лингвисте ленгвич-паки лабать?
Название: Русский язык в редакторе форм под VS2003 Отправлено: LamerDrv от Июль 29, 2005, 07:22 Цитата: "Racheengel" А если ГУИ на инглише делать, а потом в Лингвисте ленгвич-паки лабать? Тогда, конечно, все будет нормально. Но, очень не хочется делать двухязыковой интерфейс, сейчас не стоит такая задача (хотя это, конечно, полезно для общего развития). А даже если такая задача и появится, хотелось бы изначально делать русский, а уж потом в Лингвисте английский ленгвич-пак слабать. Все-таки думаю я по-русски :) . З.Ы: Пока что пришлось сделать специальную версию qtcore4.dll, в которой реализация QTextStream по-дефолту выполняет перекодировку в utf8 и положить эту dll-ку в подкаталог bin интегратора. Вроде стало нормально. (Designer.exe выполняет такую перкодировку явно при сохранении ui-файла. А вот в интеграторе, если дизассемблер не врет, это сделать забыли). Если если кому-нибудь надо ... Название: Русский язык в редакторе форм под VS2003 Отправлено: SLiDER от Июль 29, 2005, 21:00 Я бы, в принципе, не отказался от такой ДЛЛки. 8)
Название: Русский язык в редакторе форм под VS2003 Отправлено: LamerDrv от Июль 30, 2005, 08:44 Цитата: "SLiDER" Я бы, в принципе, не отказался от такой ДЛЛки. 8) Ловите. :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-ку. |