QT嵌入式同时显示多语言(中文,希伯来文,泰文)

时间:2012-04-24 09:03:53

标签: qt fonts multilingual

我希望将多种语言(英语,希伯来语,泰语,阿拉伯语,中文)作为选择列表, 首先,我使用调试消息来显示支持系列,我不知道这是否是找到支持字体的正确方法,请纠正我,如果这是一个错误的解决方案

/* output the support font */
QFontDatabase qfd ;
qDebug() << qfd.families(QFontDatabase::Hebrew);
qDebug() << qfd.families(QFontDatabase::Arabic);
qDebug() << qfd.families(QFontDatabase::Thai);
qDebug() << qfd.families(QFontDatabase::TraditionalChinese);

获取调试消息后,我正在使用工具“makeqpf”来创建qpf2文件 发现了一些关于插入替换的QFont函数 QFont::insertSubstitutionQFont::insertSubstitutions 我需要加载所有这些来显示正确的单词

  

其中DejaVu为希伯来语,阿拉伯语和泰国人提供服务

通过这种方式,我可以显示中文,英文,希伯来文,阿拉伯文但不是泰文,

QFont font1("WenQuanYi Micro Hei [prerendered]",14,50,FALSE);
subs << "DejaVu Sans [prerendered]" << "Waree" ;
font1.insertSubstitutions("WenQuanYi Micro Hei [prerendered]", subs);
qApp->setFont(font1);

qDebug() << font1.family() ;
QStringList sl = font1.substitutions() ;
qDebug() << sl.isEmpty() ;
qDebug() << sl ;
qDebug() << font1.substitutes("WenQuanYi Micro Hei [prerendered]") ;

我只是做了另一个测试来改变字体系列

QFont font1("DejaVu Sans [prerendered]",14,50,FALSE);
subs << "WenQuanYi Micro Hei [prerendered]" << "Waree" ;
font1.insertSubstitutions("DejaVu Sans [prerendered]", subs);
qApp->setFont(font1);

如果我首先插入“DejaVu Sans”,当我打开多语言页面时, 程序崩溃了,我想这是因为程序无法显示中文和崩溃,

我也尝试独立阅读“泰语”字体“Waree”,如下所示

QFont font1("Waree",14,50,FALSE);

这样,我可以在我的程序中看到“Thai”字体, 但只有“泰国人”,(希伯来语,阿拉伯语,繁体中文)都是空白的

最终目标是同时显示所有语言 所以我需要加载waree并正确显示,请帮忙 并感谢您的阅读!

任何回复都将不胜感激!!

0 个答案:

没有答案