语言更改事件时动态更改Qt应用程序图标

时间:2013-09-03 09:51:26

标签: qt qt4 translation qt-creator

我目前正在开发一款可以动态更改语言的Qt应用。

要翻译字符串,我使用了QTranslator并在我的每个小部件中重载了changeEvent方法,这一切都运行良好。

项目资源与众不同。事实上,Qt资源可以在应用程序的资源文件(.qrc)中具有lang属性,但it seems that it is only loaded at the application startup, based on the user's locale不是我想要的。我希望能够在我的代码中触发LanguageChange事件时动态更改这些图标。

我可以使用rcc文件来更改资源文件,但似乎这个文件只会在运行时加载,因此在运行程序之前我将无法访问Qt Designer中的资源。

因此,我可以在我的应用程序.pro文件中使用resource_en.qrc文件,这样我就可以使用Qt Designer设置我的图标,然后在运行时使用我的.rcc files(resource_fr等)。 ..)动态设置资源?但是如何从资源中取消注册.qrc文件并将其替换为.rcc文件(如果可能)

希望我足够清楚:D

谢谢:)

3 个答案:

答案 0 :(得分:2)

您可以使用setWindowIcon方法轻松动态加载应用程序图标。假设mainWin是你的QMainWindow。

if (lang == en)
    mainWin.setWindowIcon(QIcon(":/Resources/icon/en-icon.png"));
else if (lang == vn)
    mainWin.setWindowIcon(QIcon(":/Resources/icon/vn-icon.png"));

希望这可以提供帮助。

答案 1 :(得分:1)

您是否可以尝试使用QLocale修改语言区域?

   QLocale::setDefault(QLocale(QLocale::Basque, QLocale::Spain));

答案 2 :(得分:1)

您可以使用QResource::registerResource()QResource::unregisterResource()

加载和卸载二进制资源

Dynamic resource loading

只要每个资源文件中的虚拟路径相同,就应该正确加载它们。