crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Русский шрифт в QTreeView
igorenja
  опции профиля:
сообщение 4.3.2010, 6:14
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 18.1.2010
Пользователь №: 1384

Спасибо сказали: 1 раз(а)




Репутация:   0  


Доброе время суток!
Возможно об этом уже писалось, но я найти не смог....
Ситуация следующая:
Есть окошечко в котором есть такой код
CODE

QTextCodec *codec = QTextCodec::codecForName("windows-1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);

BtnBack = new QPushButton(this);
BtnBack->setText(QString(tr("Назад")));

model = new QDirModel(this);
tree = new QTreeView(this);
tree->setModel(model);


В общем под виндой всё нормально, а вот под линуксом проблема. Если есть имена директорий/файлов на русском языке, то отображаются крокозябры... В то же время кнопочка по русски нормально отображается..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 4.3.2010, 6:57
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 233
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(igorenja @ 4.3.2010, 6:14) *
Доброе время суток!
Возможно об этом уже писалось, но я найти не смог....
Ситуация следующая:
Есть окошечко в котором есть такой код
CODE

QTextCodec *codec = QTextCodec::codecForName("windows-1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);

BtnBack = new QPushButton(this);
BtnBack->setText(QString(tr("Назад")));

model = new QDirModel(this);
tree = new QTreeView(this);
tree->setModel(model);


В общем под виндой всё нормально, а вот под линуксом проблема. Если есть имена директорий/файлов на русском языке, то отображаются крокозябры... В то же время кнопочка по русски нормально отображается..

или все держать в UTF-8, или условная компиляция где
#ifdef винда
QTextCodec *codec = QTextCodec::codecForName("windows-1251");
#endif
#ifdef юникс с koi8
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
#endif
#ifdef юникс с UTF8
и т.д
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igorenja
  опции профиля:
сообщение 4.3.2010, 7:20
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 18.1.2010
Пользователь №: 1384

Спасибо сказали: 1 раз(а)




Репутация:   0  


Поставил UTF8 и всё заработало, пасиб
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.3.2010, 9:28
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9632
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


igorenja, вот этот кодэк зачем устанавливаешь
Цитата(igorenja @ 4.3.2010, 9:14) *
QTextCodec::setCodecForLocale(codec);
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igorenja
  опции профиля:
сообщение 4.3.2010, 13:21
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 18.1.2010
Пользователь №: 1384

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 4.3.2010, 12:28) *
igorenja, вот этот кодэк зачем устанавливаешь
Цитата(igorenja @ 4.3.2010, 9:14) *
QTextCodec::setCodecForLocale(codec);
?



Я так понимаю что именно он задает ту кодировку в которой отображается QTreeView... Если эту строку закоментить то нифига не работает, проверено опытным путём. Сейчас работает вот так:
CODE
QTextCodec *codec = QTextCodec::codecForName("UTF8");

QTextCodec::setCodecForTr(QTextCodec::codecForName("windows-1251"));
QTextCodec::setCodecForLocale(codec);

BtnBack = new QPushButton(this);
BtnBack->setText(QString(tr("Назад")));
BtnBack->show();



Но появилась новая проблема. виндовую шару, которая подмонтирована, он отображает вопросиками..... Вот теперь вопрос мона ли сделать так чтоб всё отображалось по-человечески?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.3.2010, 13:56
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9632
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


стандартная настройка выглядит так:
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
Замени UTF-8 на ту кодировку в которой у тебя исходники. Установка setCodecForCStrings нужна для корректной работы некоторых СУБД

Цитата(igorenja @ 4.3.2010, 16:21) *
виндовую шару, которая подмонтирована, он отображает вопросиками
настраивай кодировку в опция монтирования. Это относится к ФС лунуха, а не к Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2017, 14:22