QT多窗口语言动态切换

1、在main函数中进行静态切换  

  QTranslator translator;

    translator.load(QString(":/language/cn.qm");

    a.installTranslator(&translator);


2、在界面上进行动态切换

    

    QTranslator translator;

    translator.load(QString(":/language/cn.qm");

    a.installTranslator(&translator);

    如果translator在某个API中定义的局部变量,则应该使用指针,否则只有该界面可以切换,其他界面都无法进行切换(建议在main函数中进行声明,保证其生命周期)


3、其他窗口要实现语言动态切换,需要重写changeEvent,判断是否为语言变化,如果是,则调用retranslateUi进行刷新,如果是自己手动设置的显示内容,则需要自己封装函数进行重新赋值(只要按照正常方式设置即可:setText())


void *****::changeEvent(QEvent *e)
{
    QWidget::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

猜你喜欢

转载自blog.csdn.net/houxiaoliwang/article/details/77969413