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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: использование символов кирильницы  (Прочитано 10562 раз)
dr_Begemot
Гость
« : Апрель 08, 2009, 12:26 »

Имеется некий виджет на котором есть QLineEdit *edit.
При работе с редактором форм с символамаи кирильницы все отлично.
В функции main создаю экземпляр виджета и вызываю ф-ю: MyWidget->edit->setTitle("Кое что-по русски");

В результате, после MyWidget->show() на форме в строке edit имею следующее: "Êîå ÷òî-ïî ðóññêè"

Как с этим боротся?

P.S. проект запускаю в MS VS 2005
Записан
whirlwind
Гость
« Ответ #1 : Апрель 08, 2009, 12:41 »

идеологически правильно использовать функцию tr() и прочие средсва интернационализации http://doc.trolltech.com/4.5/i18n.html

т.е. писать MyWidget->edit->setTitle(tr("Something in russian")); , потом формировать ts файл, редактировать его   linguist....

а можно попробовать подобрать  преобразование в QTextCodec, но это плохое решение.
Записан
Flake
Гость
« Ответ #2 : Апрель 08, 2009, 14:09 »

Ещё QString::fromLocal8Bit("Привет") вроде работает, но самый правильный вариант приведён выше.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Апрель 08, 2009, 15:43 »

кодеки надо бы заюзать ДО создания QMainWindow...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
BlackLagarto
Гость
« Ответ #4 : Апрель 08, 2009, 23:24 »

Код
C++ (Qt)
#include <QtGui/QApplication>
#include "QTextCodec"
#include "mainxml.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
   mainxml w;
   w.show();    
   return a.exec();
}

мне помогло  потом просто везде пишется tr("привет");
Записан
dr_Begemot
Гость
« Ответ #5 : Апрель 14, 2009, 12:22 »

Код
C++ (Qt)
#include <QtGui/QApplication>
#include "QTextCodec"
#include "mainxml.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
   mainxml w;
   w.show();    
   return a.exec();
}

мне помогло  потом просто везде пишется tr("привет");

спасибо, помогло)
Записан
tohisu
Гость
« Ответ #6 : Декабрь 14, 2009, 15:32 »

Добрый день!
Тоже имею проблему с русскими символами в Qt.
Проблема с русским наблюдается абсолютно везде. Включая QtCreator / QtDesigner.
Удалось подлечить только QtCreator путем выбора шрифта. В designerе отображается только квадратик...
Перечитал несколько тем, но везде советы одни и те же. У меня работает только QString::fromLocal8Bit("Привет").
tr(),  QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); и все остальное не работает.

Библиотеки собирал сам. Система Ubuntu 9.10 системная локаль естественно UTF-8.
При сборке библиотек вроде никаких ключей дополнительных нету на этот случай...
Плиз самбади хэлп ми!
Записан
Dendy
Гость
« Ответ #7 : Декабрь 14, 2009, 15:41 »

Простое правило: Не используйте кирилицу в коде. Вообще. Никогда. И будет вам счастье (-:
Записан
tohisu
Гость
« Ответ #8 : Декабрь 14, 2009, 15:46 »

Это не выход!
В коде я ее использовать может и не буду, но не оборачивать же все в это уродство: QString::fromLocal8Bit(""). Тем более даже в дезигнере ничего не работает. Или настоящие_программисты_пробелом_не_пользуются? Улыбающийся))) Надо как-то глобалоно это решить... С библиотеками которые скачивались из репозитроия все было нормально...

UPD
Так, немного поторопился...
Если в main поставить вызов QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")), то tr() работает корректно.
Но все равно можно ли обойтись без этого?
« Последнее редактирование: Декабрь 14, 2009, 15:57 от tohisu » Записан
Dendy
Гость
« Ответ #9 : Декабрь 14, 2009, 15:50 »

Что оборачивать собрались-то, кирилицу? Так ведь договорились её не использовать (-: Скриншот дезигнера, пожалуйста.
Записан
tohisu
Гость
« Ответ #10 : Декабрь 14, 2009, 16:05 »

Примерно так выглядит:


В предыдущий пост добавил апдэйт. Т.е. tr() вроде заработал, но например такая конструкция все равно не проходит qDebug() << tr("").
Может все-таки при сборке библиотек надо что-то указать?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #11 : Декабрь 14, 2009, 16:53 »

Цитировать
Простое правило: Не используйте кирилицу в коде. Вообще. Никогда.

Неправильное это правило - как писать комменты по узкоспециализированным темам - по тематике в которой на русском не все понятно будет новому человеку а уж нга ломанном переведенном на английский и сам через месяц не разберешь...
Записан
Dendy
Гость
« Ответ #12 : Декабрь 14, 2009, 17:33 »

tohisu, такое ощущение, что не всё в порядке со шрифтами.

break, ну хорошо, в комментариях, в узкоспециализированых задачах, при незнании английского, в коде только для себя - так и быть. Но не забывайте сохранять в UTF-8.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #13 : Декабрь 14, 2009, 18:07 »

При переходе между платформами такого можно отгрести.... А еще многие редакторы насильно BOM пишут, от которого компиль не работает.
Если очень уж нужны русские символы, то можно создать файл по типу ini типа
Код:
str_0="Какая-то первая строка"
str_1="Какая-то вторая строка"
закинуть его в ресурс и юзать строки из него. Я, например, в таких случаях в коде пишу на транслите и перевожу в лингвисте.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #14 : Декабрь 14, 2009, 18:38 »

Цитировать
Я, например, в таких случаях в коде пишу на транслите и перевожу в лингвисте.

Эт мне кажется все таки изврат - от транслита тошнит, исходники только в UTF-8 храню - никогда никаких проблем не было - для вывода русских символов использую QString::fromUtf8

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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