Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Vernan от Декабрь 23, 2008, 14:16



Название: как разместить русский текст в QLabel
Отправлено: Vernan от Декабрь 23, 2008, 14:16
Kак разместить русский текст в QLabel. Пробовал так:
labelText->setText(trUtf8("Привет"));
отображает вместо текста квадратики.


Название: Re: как разместить русский текст в QLabel
Отправлено: BRE от Декабрь 23, 2008, 14:29
Kак разместить русский текст в QLabel. Пробовал так:
labelText->setText(trUtf8("Привет"));
отображает вместо текста квадратики.
Исходники должны быть в кодировке UTF-8, тогда это заработает.


Название: Re: как разместить русский текст в QLabel
Отправлено: -QT- от Декабрь 23, 2008, 14:59
labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));


Название: Re: как разместить русский текст в QLabel
Отправлено: Vernan от Декабрь 23, 2008, 15:29
labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));

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


Название: Re: как разместить русский текст в QLabel
Отправлено: igor_bogomolov от Декабрь 23, 2008, 15:44
Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

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


Название: Re: как разместить русский текст в QLabel
Отправлено: alkmas от Декабрь 23, 2008, 15:52
QString str = QString::fromLocal8Bit("Привет");
labelText->setText(str);

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

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


Название: Re: как разместить русский текст в QLabel
Отправлено: alkmas от Декабрь 23, 2008, 16:00
Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

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


Да так намного лучше !


Название: Re: как разместить русский текст в QLabel
Отправлено: -QT- от Декабрь 23, 2008, 12:30
labelText->setText(QString::fromLocal8Bit(tr("Привет")));
или
labelText->setText(QString::fromLocal8Bit("Привет"));

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

label->setText(QString::fromLocal8Bit("Привет"));
реально работает в моих программах.
Может Я не то курю ?


Название: Re: как разместить русский текст в QLabel
Отправлено: Vernan от Декабрь 23, 2008, 12:35
Попробуй так:
Код:
#include <QtCore/QTextCodec>
#include ..
int main(int argc, char *argv[])
{
   QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
   ...
   ...
}

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


Работает. Спасибо за помощь!


Название: Re: как разместить русский текст в QLabel
Отправлено: igor_bogomolov от Декабрь 23, 2008, 12:45
Можно и как -=QT=-  написал
Цитировать
label->setText(QString::fromLocal8Bit("Привет"));



Название: Re: как разместить русский текст в QLabel
Отправлено: Alex03 от Декабрь 24, 2008, 07:32
Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

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

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


Название: Re: как разместить русский текст в QLabel
Отправлено: -QT- от Декабрь 24, 2008, 08:35
Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

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

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

1. Чтение документации это для одних - способ получить информацию, для других - непосильная обязанность.
2. Полностью согласен. Если не использовать при создании объекта коммандой new указатель на родительский
объект (применимо для наследуемых от QObject) то требуется после использования принудительно удалять
его (созданный объект) коммандой delete.
3. А по вопросу эксперементирования IMHO так-же и анальный секс придумали, кто-то пользуется  ;D а кто-то
и нет  ;)


Название: Re: как разместить русский текст в QLabel
Отправлено: alkmas от Декабрь 24, 2008, 09:30
Можно еще так:
labelText->setText((new QString)->fromLocal8Bit("Привет"));

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

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

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

А мой второй вариант я признаю ошибочным !