最近整QT的翻译,发现在头文件中的tr("XXXX")是没有办法正常翻译的,经过仔细研究之后发现原来是我放在头文件中的tr("XXX")设置为了static 导致的,这里咱们说说QT的翻译原理,QT的翻译原理是动态的,在使用之前是需要设置编码格式的,中国的不用说了一般都是GBK或者是GB18030,由于静态变量在程序编译的时候就已经分配好了所以根本没有机会能在setTextCodecForTr()之后进行正常的翻译操作。所以,这个时候咱们如果涉及到需要翻译的文本问题的话,有两个解决的方案:
1.使用Unicode的方式,这个咱们可以参考QT中UI是怎么来进行翻译的,QT中的ui_XXX.h文件采用的就是QApplication::translate()来进行翻译的,但是这个咱们需要知道其Unicode的编码的十六进制。
2.只能是将QObject::tr()的东西移动到非静态成员。