问:我无法在QApplication的子类中安装翻译器

在我的应用程序中,我将QApplication子类化为很多事情,例如集中式异常处理,SQLite数据库连接,通过QSettings初始化默认设置(需要时)。特别是加载翻译。我在构造函数中这样做,当我这样做时:
installTranslator (&translator);
qDebug() << "Translation from PApplication:"
         << translate ("PAddFormWindow", "Dialog");
我得到了非常正确的翻译(俄语)。但在我的应用程序中,我看到一切都用英语。更糟糕的是,即使我在初始化应用程序对象后尝试立即翻译,我也会用英语看到它:
PApplication a ("PCorrect", argc, argv);
qDebug() << "Translation from void main():"
         << a.translate ("PAddFormWindow", "Dialog");
那么,为什么它不起作用?是因为我在构造函数中这样做了吗?我还应该提到PApplication类是在应用程序本身中声明和定义的,而是在动态加载的库中(我正在开发一个应用程序套件)。我的平台是Qt 4.7.0的Windows XP。     
已邀请:
可能是
installTranslator(&translator)
中的
&translator
指的是从构造函数退出时被销毁的局部变量。如果installTranslator()没有复制它(文档在这个主题上不是很清楚),可能会发生任何事情,包括非工作翻译甚至是段错误。 实际上,docs给我们提示:“安装或删除QTranslator,或者更改已安装的QTranslator会生成一个LanguageChange事件”。事实上,我们可以改变翻译,它会影响某些事情,这表明它不会被复制。但目前还不清楚。它应该明确说明它是否被复制以及我们应该如何处理它。     

要回复问题请先登录注册