retranslateUi()清除QLabel文本

时间:2011-09-15 06:38:40

标签: c++ qt user-interface localization

我的基于qt4的应用程序通过调用retranslateUi()函数动态更改GUI语言。它就像一个魅力,但当它处理QLabel哪个文本由程序更改时,它会尝试翻译原始文本 - 在Qt Designer中指定的文本,而不是由我的程序设置的文本。

我理解这是因为retranslateUi()是在构建过程中自动生成的,所以它不可能知道我的更改,但我宁愿完全跳过这样的QLabel。有没有办法告诉Qt跳过retranslateUi()中的某些小部件?或者,也许我可以在我的程序中禁用QLabel的内容更改?

我知道我可以子类QLabel并通过覆盖setText()来解决这个问题,但我更喜欢使用标准QLabel来使用Qt Designer来操作它。

1 个答案:

答案 0 :(得分:6)

我记得,在Designer中你可以取消QLabel的翻译。默认情况下是。选择您不想翻译的标签,在属性编辑器中滚动到“文本”属性,展开它并取消选中翻译复选框。然后你应该再次生成ui _ * .h文件。之后,您的标签不应该是retranslateUi代码