2010-07-05 67 views
3

嗨,我有一個Qt應用程序,並且有幾個插件附加到應用程序。在運行時更改Qt語言

我想改變運行時程序的語言,但我不知道該怎麼做。

我知道我可以通過這個代碼的調用做到這一點:

ui.retranslateUi(this); 

,但因爲有許多插件和這些插件許多部件,這是很難寫,因爲這個代碼成員ui在小部件中是私有的。 我不想爲每個構件類編寫代碼。

你知道加載新翻譯文件的更好方法嗎?

回答

1

您可以發送QEvent::LocaleChange插件,但他們需要爲它做出反應。

+0

即使他們反應我應該寫一些代碼Widget類。我不能從插件類調用ui.retranslateUi。 ui對於Widget類是私有的。 – ufukgun 2010-07-06 10:38:47

2

只需removeQTranslator的所有實例和install具有所需語言的新實例。 Qt會自動發送LocaleChange事件給你應用中的所有視圖,甚至是你插件中的視圖。沒有必要手動發送這些事件。