retranslateUi() 清除 QLabel 文本

发布于 2024-12-04 10:39:18 字数 468 浏览 0 评论 0原文

我的基于 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 QLabels 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朮生 2024-12-11 10:39:18

我记得,在 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文