Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2011, 20:58   #1
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
Вопрос Кракозябры в комбобоксе

В настройках проекта и среды установлено UTF-8. При создании MainWindow в комбобокс добавляю два строковых значения:
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString s1 = "Вертикальное", s2 = "Горизонтальное";
    ui->cmbOrien->addItem("Вертикальное");
    ui->cmbOrien->addItem("Горизонтальное");
    ui->cmbOrien->addItem(s1);
    ui->cmbOrien->addItem(s2);
}
В результате в комбобоксе получаются кракозябры. Подскажите, пожалуйста, как это исправить. Прикрепляю проект.
Вложения
Тип файла: zip MyTestQT.zip (5.5 Кб, 13 просмотров)
tumanovalex вне форума Ответить с цитированием
Старый 20.05.2011, 21:48   #2
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Попробуйте вот так

Код:
#include <QTextCodec>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("CP-1251"));
    QString s1 = tr("Вертикальное"), s2 = tr("Горизонтальное");
    ui->cmbOrien->addItem(tr("Вертикальное"));
    ui->cmbOrien->addItem(tr("Горизонтальное"));
    ui->cmbOrien->addItem(s1);
    ui->cmbOrien->addItem(s2);
}
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 20.05.2011, 22:30   #3
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Не помогло
tumanovalex вне форума Ответить с цитированием
Старый 20.05.2011, 23:29   #4
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Пробуйте менять кодировки в строке
Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Ваша кодировка"));
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 21.05.2011, 10:11   #5
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Спасибо за совет, получилось так:
Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
tumanovalex вне форума Ответить с цитированием
Старый 21.05.2011, 10:38   #6
iukash
учу английский...
Форумчанин
 
Аватар для iukash
 
Регистрация: 04.04.2009
Сообщений: 480
По умолчанию

Цитата:
Сообщение от tumanovalex Посмотреть сообщение
Спасибо за совет, получилось так:
Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
У себя тоже так пробовал, но моя винда хотела только CP-1251, причем кракозябры в исходниках распознать так и не смог, хотя среда тоже настроена на UTF-8. Пришлось руками перенабирать
Код:
    QString s1 = tr("Вертикальное"), s2 = tr("Горизонтальное");
    ui->cmbOrien->addItem(tr("Вертикальное"));
    ui->cmbOrien->addItem(tr("Горизонтальное"));
"Мы можем что-то изменить и своими силами..."
"Начнешь с себя, примером ближнему поможешь..."
iukash вне форума Ответить с цитированием
Старый 21.05.2011, 23:55   #7
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Да, с кодировками в QT все непросто.
tumanovalex вне форума Ответить с цитированием
Старый 09.06.2011, 16:08   #8
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

QString().fromLocal8bit("Привет мир") - прокатит.
если хотите преобразовать кодировки файлов (В QtCreator):Правка->Выбрать кодировку. А дальше выбираете нужные действия.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 09.06.2011, 23:03   #9
tumanovalex
Пользователь
 
Регистрация: 07.03.2011
Сообщений: 83
По умолчанию

Спасибо большое.
tumanovalex вне форума Ответить с цитированием
Старый 10.06.2011, 10:45   #10
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

В идеале код должен быть в utf-8, так что пиши и дальше в utf-8.

А вообще, в идеале там изначально всё должно быть на английском, а русскую локализацию прикрутил бы уже потом. Во всяком случае, это важно, если ты делаешь свободный проект.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задать 2 действия для Итеминдекса в комбобоксе? Ekzamenator Помощь студентам 1 20.05.2011 16:49
Как в комбобоксе скрыть ненужные строки. voverrr Общие вопросы Delphi 8 08.03.2011 18:03
как сделать чтобы картинка менялась соответственно выбранному в комбобоксе значению voverrr Общие вопросы Delphi 19 09.02.2011 22:21
Как в комбобоксе cделать появление хинта при наведениии на длинный текст? TwiX Общие вопросы Delphi 3 01.06.2010 15:31
В Edit - Inicial и Year в соответствии с выбранной записью в комбобоксе Колян12 БД в Delphi 2 26.05.2008 03:49