我目前正在开发一款可以动态更改语言的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
谢谢:)
答案 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()
只要每个资源文件中的虚拟路径相同,就应该正确加载它们。