Имам проект, който трябва да поддържа множество древни езици. Проблемът ми е, че имам древен старотюркски знак (езикът се пише отдясно наляво), но не мога да покажа знаците в 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.
QString::fromUtf8(const QString &)
- person Floris Velleman   schedule 05.03.2015str
наистина ли съхранява правилните данни? Не е риторично, не съм запознат с Qt -- но интерпретацията на нотацията\U
(или всеки не-ASCII-7 знак всъщност) зависи от изпълнението и локала, така че бих проверил отново. Опитайте какво се случва, ако попълнитеstr
с правилното/очакваното кодиране (UTF-8? UTF-16?) ръчно, като използвате осмични/шестнадесетични екрани. - person DevSolar   schedule 05.03.2015QFont
+QLabel::setFont()
? - person ElderBug   schedule 05.03.2015