问题
Qt通过setText(tr()),设置的翻译不生效!!!
源代码
//加载翻译文件
QTranslator translator;
QString qmFile = ":/translations/es.qm";
translator.load(qmFile);
QApplication::installTranslator(&translator);
translator 声明为了局部变量,当构造函数执行后就被销毁了,所以当构造函数执行后,翻译生效了一次,此后当我们通过setText的方式再设置文本时,翻译就失效了。
解决方案
//加载翻译文件
QTranslator *translator = new QTranslator(this);
QString qmFile = ":/translations/es.qm";
translator->load(qmFile);
QApplication::installTranslator(translator);
将translator声明为指针,使用new方法,将其声明在堆上,则只有当该类被析构时,该translator才会被析构,此后的setText方法设置的文本就会被正常翻译。