Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Русский шрифт, перевести обратно 
:(
    Опции темы
EKoshelev
Дата 27.10.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Тут ребята где-то писали, что для того, чтобы, например, в QLineEdit вывести нормальный русский текст нужно в main.cpp метод main записать не так:

Код

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ExmplQVector w;
    w.show();
    return a.exec();
}


а вот так:

Код

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

  QTextCodec *codec = QTextCodec::codecForName("CP1251");
  QTextCodec::setCodecForTr(codec);
  a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));

    ExmplQVector w;
    w.show();
    return a.exec();
}


А потом в коде писать вот так:
Код

ui.lineEdit->setText(tr("АБВГД"));


И если потом брать строку из этого lineEdit'а, то .toAscii() всех символов в этой строке равны нулю.

Вопрос в том как из преобразованного формата перекинуть обратно, в обычный, Ascii? (ведь это вроде Ascii?) Чтобы .Ascii() были равны чему надо, а не нулям.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
math64
Дата 27.10.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



QString хранит строку в формате Unicode.
Для перевода в windows-1251 и обратно:
Код

QTextCodec *codec = QTextCodec::codecForName("windows-1251"); //или "Cp1251"
char str1251[256]; // строка в кодировке 1251
QString qstr = codec->toUnicode(str1251)
QByteArray ba = codec->fromUnicode(qstr);
strcpy(str1251, ba.data() );

tr() предназначен для перевода интерфейса приложения на другой язык с использовнием Linguist (в main загружается словарь, см. примеры <каталог qt>\examples\linguist\ )и применять его не по назначению не стоит.


PM   Вверх
EKoshelev
Дата 29.10.2011, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Спасибо. Всё работает.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
math64
Дата 29.10.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Дополнение: Если ты всё-таки используешь функции QTextCodec::setCodecForTr(codec) и т.п.
То чтобы Linguist мог правильно определить кодировку файлов нужно добавить в проект
Код

CODECFORTR  = windows-1251
CODECFORSRC = windows-1251



Это сообщение отредактировал(а) math64 - 29.10.2011, 11:41
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1056 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.