Похоже, что решение довольно простое. Необходимо перейти на Qt 5.5.1.
Символ также правильно отображается в редакторе Qt Creator 3.5.1, основанный на Qt 5.5.1. В Qt Creator 3.2.1 (на основе Qt 5.3.2) символ не отображается.
Символ отображается как прямоугольник в элементах управления пользовательским интерфейсом Qt 5.3.2. Тем не менее, он корректно отображается в ярлыках и в других текстовых элементах управления, если проект построен по Qt 5.5.1.
Оказывается, что по крайней мере Qt 5.5.1 требуется найти такой символ, если его нет в шрифт по умолчанию для управления пользовательского интерфейса.
Механизм отбрасывания шрифта по умолчанию реализуется только в Qt 5.5.1, поэтому даже Q 5.5.0 не может правильно отобразить символ, если он не найден в выбранном шрифте.
Я предполагаю, что улучшение выполнено с помощью Qt commit 5e3e34731b7880ac775e8f1fa156ce016e6820f1 Default implementation for QPlatformFontDatabase::fallbacksForFamily() (возможно, в связи с предыдущими [QFontDatabase] Defer the fallback families list initialization).
Однако все же можно отобразить этот символ в более ранних версиях Qt (даже в Qt4). Можно установить ручной шрифт, который поддерживает необходимые символы.
Например, есть шрифт «SimSun-EXTB» в Windows, который поддерживает CJK Unified Идеограммы Extension B. Этот шрифт можно настроить вручную на определенные виджеты пользовательского интерфейса или всего приложения:
QFont CJK_ExtB("SimSun-ExtB");
// font for widget
ui->lineEdit->setFont(CJK_ExtB);
// or default application font
QApplication::setFont(CJK_ExtB);
Конечно, чтобы отобразить символ, он должен быть доступен в некотором системном шрифте или в загруженном шрифте приложения. Windows 7 по умолчанию имеет шрифт для CJK Ext.B
, но для отображения символов от CJK-C
или CJK-D
необходим другой шрифт. Например, есть бесплатный шрифт Unicode CJK BabelStone Han, который охватывает некоторые такие символы. Можно загрузить его вручную для применения:
QFontDatabase::addApplicationFont("c:/test/BabelStoneHan.ttf");
Теперь в состоянии найти автоматически CJK-B
символы в шрифте системы Windows, «SimSun-EXTB» и CJK-C
символы в «BabelStoneHan», если Qt 5.5.1 используется приложение ,
Шрифт улучшение запасного варианта в Qt 5.5.1 в основном влияет на Windows, так как в Ubuntu Linux приложение может найти подходящие шрифты для символов, даже с более старыми версиями Qt (если шрифты добавляют QFontDatabase::addApplicationFont
, так как есть нет системных шрифтов для расширений CJK по умолчанию).
Вы пробовали 'QLocale'? как 'lineEdit.setLocale (QLocale :: Chinese);' –
все еще не работает ... –
QtCreator (3.2, Qt 5.3) сам не способен правильно показать этого персонажа. Эта версия Qt полностью поддерживает Unicode 6.2. Убедитесь, что символ определен для 6.2: http://www.unicode.org/Public/6.2.0/charts/CodeCharts.pdf. – mhcuervo