【问题标题】:Qt : Strings display incorrectly in rtl layoutQt:字符串在 rtl 布局中显示不正确
【发布时间】:2023-04-06 21:08:01
【问题描述】:

我正在编写一个应该使用从右到左布局的 qt 应用程序,但是在 qtreewidgetqtablewidget 中显示包含空格、数字和字母的字符串时出现问题.例如,当我写 65 %c 时,它显示为 c% 65,当然日期时间显示为 "22:10:06 2015-01-06" 而不是 "2015-01-06 22:10:06"

我该如何解决这个问题?

截图:

谢谢

【问题讨论】:

  • 请贴出相关部分代码
  • 我使用 qt 设计器输入文本。在我提到的 qt 设计器和应用程序文本中显示
  • 如果你想要我可以给你一些截图
  • @SantaXYZ 您可以在问题中添加屏幕截图:meta.stackexchange.com/a/91719
  • @Simon Warta 我在发布图片方面没有足够的声誉,但这是截图的链接i58.tinypic.com/vfuw44.jpg

标签: qt qt4


【解决方案1】:

当您使用 rtl 布局时,所有孩子都认为您的写作语言也是 rtl。 数字是通用的,因此根据此设置对其进行处理。 当您使用 ltr 字符(例如拉丁语)时,这会产生这种“有趣”的副作用(当您编辑此文本时更有趣,当箭头移动时光标会跳转到不同的位置)。

修复它的一种方法是在需要的地方添加 Unicode Left-to-right mark 字符。

如果您的语言是 ltr,IMO 最好不要使用此功能(rtl 布局)。让语言环境设置来发挥作用。

您能解释一下您是如何以及为什么使用“rtl 布局”的吗?你决定改变文字方向是为了什么?

【讨论】:

  • 我的应用程序应该翻译成八种语言,其中三种语言是 rtl。出于这个原因,我在 qt 设计器中以 rtl 布局设计我的 ui,当用户更改语言时,应用程序中的布局方向将更改为语言方向(rtl 或 ltr)。
  • 您必须进行本地化。日期和时间应根据当前语言环境转换为字符串。如果您正在混合语言,则应在相应的本地化中添加“从左到右标记”。阅读:doc.qt.io/qt-5/internationalization.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多