QT 多语言无法切换问题 load失败 路径无效

CSDN一大堆的文章说QT怎么切换多语言我就不说了,尼玛没有一个能用的。问题就在于路径不对:

void MainWindow::on_pushButton_3_clicked(){
    QTranslator m;

    if(m.load("./Duoyuyan_us_EN.qm") ){
        qApp->installTranslator(&m);
        ui->retranslateUi(this);
    }else
        QMessageBox::information(NULL,NULL,"加载文件失败");
}

1、上面这个代码,./Duoyuyan_us_EN.qm必须在exe文件同目录,我们新建QT工程时,他会新建一个build的目录出来exe,跟源文件CPP不一样,而使用工具生成的qm偏偏放在CPP目录,这时就要把qm拷贝到exe目录才能load成功。


2、除了上面直接用文件系统加载qm文件,还可以通过exe本身的资源来加载,这时就要新建资源文件,然后通过

load(":/xxx.qm")来加载。


说白了就是./和:/的区别,这些掉毛为何不说害死小白呢?


3、ios和安卓都是引用一个字符串然后对应翻译语言,例如 LOAD("FILE"),这个FILE再翻译成中文“文件”,英文“File”,也就是说“FILE”相当于宏定义。但是QT呢,可以直接用第一语言来显示。

例如我们设计UI时,直接在控件的text属性写入“文字”,然后新建一个EN.qm多语言,翻译时只要“文字”对应“Charactic”即可,也就是说,第一语言的“文字”就是宏定义!

切换时只要 installTranslator(),要恢复第一语言,只要removeTranslator()即可!

本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不容易,如果觉得对你有帮助,就打赏一下吧:

查看打赏记录

发表评论请遵守党国法律!
  • 最新评论
  • 总共0条评论
  • Blog v1.1© 2020 labisart.com 版权所有 | 联系:labartwork@163.com