Qt 语言家实现中英文切换

  • 生成ts文件

      在QT的项目文件(.pro)中加入:TRANSLATIONS = XXX.ts YYY.ts(假设是多行,则用 \ 切割)

TRANSLATIONS =  CN.ts\
                EN.ts

工具---外部---Qt语言家--更新翻译,可以获取CN.ts和EN.ts

  • 生产qm文件

用Qt Lingust打开EN.ts,将中文翻译成中文

然后  工具---外部---Qt语言家--发布翻译,可以获取CN.qm和EN.qm

  • 代码加载qm文件

头文件:

QTranslator * translator;
void changeEvent(QEvent* e);//解决下俩列表中不更新语言的问题

 

cpp文件:

构造函数中加载,这样刚启动的版本加载EN.qm,显示为英文版
translator = new QTranslator(this);
translator->load("EN.qm");    //加载语言包
qApp->installTranslator(translator); //安装翻译器


void MainWindow::changeEvent(QEvent *e)
{
    if(e->type() == QEvent::LanguageChange)
    {
        //刷新UI
        this->ui->retranslateUi(this);
        if(!isCH)
        {
            this->ui->comboBox->setCurrentIndex(1);
        }
    }
}


void MainWindow::on_radioButton_clicked()
{
    if(translator != NULL)
    {
        qApp->removeTranslator(translator);
        delete translator;
        translator = NULL;
    }

    translator = new QTranslator;
    if(translator->load("CN.qm"))
    {
        qApp->installTranslator(translator);
    }
    ui->retranslateUi(this);//刷新界面字符
}

void MainWindow::on_radioButton_2_clicked()
{
    if(translator != NULL)
    {
        qApp->removeTranslator(translator);
        delete translator;
        translator = NULL;
    }

    translator = new QTranslator;
    if(translator->load("EN.qm"))
    {
        qApp->installTranslator(translator);
    }
    ui->retranslateUi(this);//刷新界面字符
}


void MainWindow::on_comboBox_activated(int index)
{
    if(index == 1)
    {
        translator->load("EN.qm");
        qApp->installTranslator(translator);
        ui->retranslateUi(this);//刷新界面字符
        isCH = false;
    }
    else
    {
        translator->load("CN.qm");
        qApp->installTranslator(translator);
        ui->retranslateUi(this);//刷新界面字符
        isCH = true;
    }

}

效果图

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值