Linux下切换qt程序的字母库

问题:   在程序切换俄语时字符串都显示空白 , 说明系统中未有俄语字体库 , 先下载一个带有俄语的字体库 , 直接放在/usr/lib/fonts/目录下.
      俄语可以正常切换显示之后,却改变了其他语言的字体格式

解决:      需要在切换语言时也动态切换原始字体库和俄语字体库
   

//qt全局窗口资源
#define qApp (static_cast<QApplication *>(QCoreApplication::instance()))

void translateAllStr(bool isWrite)
{
    // 读取或写入语言序号
    readWriteLangID(isWrite);

    int ret;
    QFontDatabase database;
    if(g_byCurLng == 3)//语言是俄语时
    {
        ret = database.addApplicationFont(":/arial.ttf");//qt资源中的俄语字库,也可放在/usr/lib/fonts/目录下
    }
    else
    {
        ret = database.addApplicationFont("/usr/lib/fonts/simsun.ttc");//原俄语字库
    }
    if (ret < 0)
    {
        qDebug("Font not added!");
    }
    else
    {
        QFont font;
        font.setFamily(QFontDatabase::applicationFontFamilies(ret).at(0));
        qApp->setFont(font);
    }

}

 

posted @ 2024-04-23 11:25  乌鲁鲁星上的小王子  阅读(58)  评论(0)    收藏  举报