retranslateUi() 清除 QLabel 文本
我的基于 qt4 的应用程序通过调用 retranslateUi() 函数动态更改 GUI 语言。它的工作方式就像一个魅力,但是当它处理由程序更改文本的 QLabel 时,它会尝试翻译原始文本 - Qt Designer 中指定的文本,而不是我的程序设置的文本。
我知道发生这种情况是因为 retranslateUi()
是在构建过程中自动生成的,所以它不可能知道我的更改,但我宁愿跳过这样的 QLabel
完全地。有没有办法告诉 Qt 在 retranslateUi()
中跳过某些小部件?或者,也许我可以在程序中禁用 QLabel
的内容更改?
我知道我可以子类 QLabel
并通过重写 setText()
解决这个问题,但我更喜欢使用标准 QLabel
能够使用 Qt Designer 对其进行操作。
My qt4-based application dynamically changes the GUI language by calling retranslateUi()
function. It works like a charm, but when it processes the QLabel
which text changes by the program, it tries to translate original text - the one, specified in Qt Designer, not the one, set by my program.
I understand it happens because retranslateUi()
is auto-generated during build process so it couldn't possibly know about my changes, but I'd prefer to skip such QLabel
s completely. Is there a way to tell Qt to skip certain widgets in retranslateUi()
? Alternatively, maybe I can disable content change for QLabel
in my program?
I know I can sub-class QLabel
and by overriding setText()
solve this problem, but I prefer to use standard QLabel
to be able to manipulate it using Qt Designer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我记得,在 Designer 中,如果 QLabel 被翻译,您可以取消选中它。默认情况下是这样。选择您不想翻译的标签,在属性编辑器中滚动到“文本”属性,展开它并取消选中翻译复选框。然后你应该再次生成 ui_*.h 文件。之后你的标签不应该出现在 retranslateUi 代码中
As I remember, in Designer you can uncheck on QLabel should it be translated. By default it is. Choose label you don't want to be translated, in property editor scroll to "text" property, expand it and uncheck translate checkbox. Then you should generate ui_*.h file again. After that your label shouldn't be in retranslateUi code