1

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

为了翻译字符串,我在每个小部件中使用QTranslator并重载了该changeEvent方法,并且在这方面一切正常。

项目的资源是另一回事。事实上,Qt 资源可以lang在应用程序的资源文件 (.qrc) 中有一个属性,但它似乎只在应用程序启动时加载,基于用户的语言环境,这不是我想要的。我希望能够在我的代码中触发 LanguageChange 事件时动态更改这些图标。

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

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

希望我让自己足够清楚:D

谢谢 :)

4

3 回答 3

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"));

希望这能有所帮助。

于 2013-09-03T10:08:37.347 回答
1

您是否可以尝试使用QLocale修改您的语言环境?

   QLocale::setDefault(QLocale(QLocale::Basque, QLocale::Spain));
于 2013-09-03T12:27:40.637 回答
1

QResource::registerResource()您可以使用and加载和卸载二进制资源QResource::unregisterResource()

动态资源加载

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

于 2013-09-03T14:07:41.230 回答