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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировка и static QString  (Прочитано 5695 раз)
folibis
Гость
« : Июнь 25, 2010, 02:54 »

Qt 4.6 QtCreator 2.0.0
Есть некая программа, в main.cpp я делаю так
Код:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForCStrings(codec);
исходники тоже в кодировке cp1251, все работает замечательно, все русские тексты отображаются как надо. но вот есть один QString который определен как static член класса, примерно так:
в *.h файле
Код:
static const QString dbStrings[][5];
в *.cpp файле
Код:
const QString Global::dbStrings[][5] =
{
{"xxx","тут русский текст","и тут тоже","xxx","xxx"},
{"xxx","тут русский текст","и тут тоже","xxx","xxx"}
}
И вот везде где я его использую он пишется кракозябрами. Что делать, не знаю. Думаю в сторону того что инициализация статических членов класса происходит до вызова setCodecForCStrings.
И как быть?
А, вот, еще одна проблема. Есть некий диалог, производный от QDialog, на нем есть QDialogButtonBox c 2-мя кнопками - Ok и Cancel. Так вот в дизайнере форм оно выглядит как надо, по русски: Да и Отмена, а при запуске программы почему то Ok и Cancel.  Свойство Locale во всех контролах - Russian,RussianFedefation. Почему так - тоже не понятно.
Записан
folibis
Гость
« Ответ #1 : Июнь 25, 2010, 03:26 »

Со вторым вопросом разобрался:
Код:
QTranslator qtTranslator;
qtTranslator.load("qt_ru",QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
А вот с первым никак ((
Записан
folibis
Гость
« Ответ #2 : Июнь 25, 2010, 03:58 »

Хотя нет, не разобрался. Это что ж теперь, везде за собой этот файл таскать? А как его статически прилинковать? Это возможно?
Записан
ритт
Гость
« Ответ #3 : Июнь 25, 2010, 07:43 »

static QString - это зло. не делайте так...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Июнь 25, 2010, 07:46 »

>>Это что ж теперь, везде за собой этот файл таскать?
угу.
>>А как его статически прилинковать?
в ресурсы можно затолкать, но я бы не стал, выигрыша не будет, а компиляция будет долгой.
Записан

Юра.
SASA
Гость
« Ответ #5 : Июнь 25, 2010, 10:45 »

Пользуй static const char *strings[] и QT_TRANSLATE_NOOP().
Пример можно найти в доке.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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