Как да показвам написани отдясно наляво древни знаци в Qt

Имам проект, който трябва да поддържа множество древни езици. Проблемът ми е, че имам древен старотюркски знак (езикът се пише отдясно наляво), но не мога да покажа знаците в Qt етикет по този начин:

//main.cpp
#include <QApplication>
#include <QString>
#include <QLabel>

int main(int argc, char** argv[])
{
    QApplication app(argc, argv);
    QString str = "\U00010C00"; // Character I wanted to display
    QLabel *label = new QLabel(str);
    label -> show();
    return app.exec();
}

Когато стартирам това, в етикета той отпечатва квадрат, който показва, че според мен символът не може да бъде намерен. Как мога да поправя този проблем?

Вдясно на прозореца се показва квадрат, така че няма проблем с местоположението на героя. Моята операционна система е Ubuntu 12.04 x64, а моята версия на Qt е 5, между другото. Имам старотюркски шрифт Unicode.


person Bora Semiz    schedule 05.03.2015    source източник
comment
Квадратът обикновено показва, че избраният от вас шрифт няма глиф за тази кодова точка.   -  person DevSolar    schedule 05.03.2015
comment
Но имам шрифта. Не трябва да показва квадрата :(   -  person Bora Semiz    schedule 05.03.2015
comment
@BoraSemiz Опитахте ли да го конвертирате? QString::fromUtf8(const QString &)   -  person Floris Velleman    schedule 05.03.2015
comment
Имате инсталиран шрифт с този глиф, но дали сте избрали този шрифт за използване в Qt? В крайна сметка str наистина ли съхранява правилните данни? Не е риторично, не съм запознат с Qt -- но интерпретацията на нотацията \U (или всеки не-ASCII-7 знак всъщност) зависи от изпълнението и локала, така че бих проверил отново. Опитайте какво се случва, ако попълните str с правилното/очакваното кодиране (UTF-8? UTF-16?) ръчно, като използвате осмични/шестнадесетични екрани.   -  person DevSolar    schedule 05.03.2015
comment
Какво ще кажете за QFont + QLabel::setFont()?   -  person ElderBug    schedule 05.03.2015
comment
@ElderBug да, току-що опитах, но получавам същия резултат.   -  person Bora Semiz    schedule 05.03.2015


Отговори (1)


Трябва да кажете на етикета кой шрифт да използва.

QFont labelFont = QFont( "Old Turkic" );
label->setfont( labelFont );
person codencandy    schedule 05.03.2015
comment
Изглежда не работи. Все още получавам същия резултат, но размерът на квадрата е променен. - person Bora Semiz; 05.03.2015