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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как разместить русский текст в QLabel  (Прочитано 12715 раз)
Vernan
Гость
« : Декабрь 23, 2008, 14:16 »

Kак разместить русский текст в QLabel. Пробовал так:
labelText->setText(trUtf8("Привет"));
отображает вместо текста квадратики.
Записан
BRE
Гость
« Ответ #1 : Декабрь 23, 2008, 14:29 »

Kак разместить русский текст в QLabel. Пробовал так:
labelText->setText(trUtf8("Привет"));
отображает вместо текста квадратики.
Исходники должны быть в кодировке UTF-8, тогда это заработает.
Записан
-QT-
Гость
« Ответ #2 : Декабрь 23, 2008, 14:59 »

labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));
Записан
Vernan
Гость
« Ответ #3 : Декабрь 23, 2008, 15:29 »

labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));

выдаёт такую ошибку
error C2001: newline in constant
Записан
igor_bogomolov
Гость
« Ответ #4 : Декабрь 23, 2008, 15:44 »

Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

Код:
labelText->setText(tr("Привет"));
Записан
alkmas
Гость
« Ответ #5 : Декабрь 23, 2008, 15:52 »

QString str = QString::fromLocal8Bit("Привет");
labelText->setText(str);

// void setText ( const QString & )
// передача параметра в setText идет по ссылке, а не по значению

Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));
Записан
alkmas
Гость
« Ответ #6 : Декабрь 23, 2008, 16:00 »

Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

Код:
labelText->setText(tr("Привет"));


Да так намного лучше !
Записан
-QT-
Гость
« Ответ #7 : Декабрь 23, 2008, 12:30 »

labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));

выдаёт такую ошибку
error C2001: newline in constant

label->setText(QString::fromLocal8Bit("Привет"));
реально работает в моих программах.
Может Я не то курю ?
Записан
Vernan
Гость
« Ответ #8 : Декабрь 23, 2008, 12:35 »

Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

Код:
labelText->setText(tr("Привет"));


Работает. Спасибо за помощь!
Записан
igor_bogomolov
Гость
« Ответ #9 : Декабрь 23, 2008, 12:45 »

Можно и как -=QT=-  написал
Цитировать
label->setText(QString::fromLocal8Bit("Привет"));

Записан
Alex03
Гость
« Ответ #10 : Декабрь 24, 2008, 07:32 »

Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

Не хватает утечек памяти?
Откуда, блин, вы берётесь?
Почему вместо того чтобы один раз почитать документацию и разобраться в кодировках большинство начинает экспериментировать, пробуют сотни вариантов и т.д., решают проблему кривешим способом, при этом так и не понимая её сути?

PS. Sorry, никого не хотел обидеть.
Записан
-QT-
Гость
« Ответ #11 : Декабрь 24, 2008, 08:35 »

Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

Не хватает утечек памяти?
Откуда, блин, вы берётесь?
Почему вместо того чтобы один раз почитать документацию и разобраться в кодировках большинство начинает экспериментировать, пробуют сотни вариантов и т.д., решают проблему кривешим способом, при этом так и не понимая её сути?

PS. Sorry, никого не хотел обидеть.
Никого не хотел обидеть.  Улыбающийся
Но отвечал на конкретно поставленный вопрос : "как разместить русский текст в QLabel ?", а не на вопрос:
"Как правильно использовать локализацию в программном продукте ?"

1. Чтение документации это для одних - способ получить информацию, для других - непосильная обязанность.
2. Полностью согласен. Если не использовать при создании объекта коммандой new указатель на родительский
объект (применимо для наследуемых от QObject) то требуется после использования принудительно удалять
его (созданный объект) коммандой delete.
3. А по вопросу эксперементирования IMHO так-же и анальный секс придумали, кто-то пользуется  Смеющийся а кто-то
и нет  Подмигивающий
Записан
alkmas
Гость
« Ответ #12 : Декабрь 24, 2008, 09:30 »

Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

Не хватает утечек памяти?
Откуда, блин, вы берётесь?
Почему вместо того чтобы один раз почитать документацию и разобраться в кодировках большинство начинает экспериментировать, пробуют сотни вариантов и т.д., решают проблему кривешим способом, при этом так и не понимая её сути?

PS. Sorry, никого не хотел обидеть.

Есть 2 пути:
1. от теории к практике
2. и наоборот
Кому как удобно.
Второй похоже как вы сказали для большинства более естественен.
Стоит задуматься!

А мой второй вариант я признаю ошибочным !
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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