Qt: отображать динамически составленный неанглийский текст на метках или кнопках.

Я пытаюсь отобразить динамически сгенерированный текст на хинди на QPushbutton.

Пожалуйста, взгляните на следующий код:

char nam[] = { 40, 9, 62, 9, 46, 9 };
QString nameStringInHindi(QString::fromRawData((QChar *)nam, 3));
qDebug() << nameStringInHindi;

Вывод: "नाम"

Но если я делаю ui->pushButton->setText(nameStringInHindi) // печатаются некоторые ненужные символы.

Я также попытался настроить шрифт приложения.

QFontDatabase::addApplicationFont("/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf")

и QApplication::setFont(QFont("Лохит Деванагари",12));

но это не помогло.

Может ли кто-нибудь помочь мне с этой проблемой? Большое вам спасибо за ваше время.


person jestin    schedule 20.04.2013    source источник


Ответы (1)


Я не знаю, почему ваш код не работает, но добавление пустой строки к строке, созданной из необработанных данных, каким-то образом исправляет строку. Это работает в Linux с Qt 5.0.1:

QString nameStringInHindi(QString::fromRawData((QChar*)nam, 3) + "");
person Community    schedule 20.04.2013
comment
Спасибо Року. Добавление пустой строки позволяет работать даже с Qt 4.7.4 и 4.8.4. Было бы здорово, если бы кто-нибудь объяснил, как это решает проблему. Это ошибка? - person jestin; 21.04.2013