понедельник, 20 мая 2013 г.

Говори по-русски!

После завтрака, продолжим терзать Qt. Красивые окошки и дизайн - это хорошо, но всё же, истина на дне консоли. Просмотрев коротенький урок по русификации консольного "Hello world", повторяя все шаги, ничего читабельного моя консоль не выдала (кто бы сомневался...). Иду в Интернеты и ищу братьев по несчастью, таких много, вроде и статья приличная есть.




Сделайте, мол, такое:

Чтобы не заморачиваться с русским текстом в консоли Qt, проще сделать следующее:
1) подключить clocale с помощью директивы include
2) юзать setlocale(LC_ALL, "Russian");

Вставьте следующий код:

#include <QtGui/QApplication>
#include <QTextCodec> // подключение класса кодека текста
#include "mainwindow.h"
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));//изменения
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));//изменения
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //изменения
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec();
}


А еще не забудьте:  

Слева в Qt Creator 2.3.1 нажимаем "Проекты".
Цели->Собрать->Среда сборки->Подробнее ставим галочку возле "Чистая системная среда".


Мне же помог только следующий способ:


#include <QTextStream>
#include <QTextCodec> // подключение класса кодека текста
int main()
{
    QTextStream cout(stdout);
    QTextCodec *coutCodec = QTextCodec::codecForName("IBM866");// тут могло быть "IBM-866", "UTF-8", "CP866"
    cout.setCodec(coutCodec);
    cout<<"Hello world!"<<endl;
    cout<<QObject::tr("Привет мир!");
    return 0;
}


Комментариев нет:

Отправить комментарий