gpt4 book ai didi

c++ - :QML word wrap with nbsp on Linux

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:28 25 4
gpt4 key购买 nike

我有以下问题:

当我在 Windows 上构建我的应用程序时,QML 文本实际上确实根据 nbsp 字符(我认为是 U+00A0)正确换行。然而,在我的带有 Raspbian 的 Raspberry Pi 上,nbsp 似乎被忽略了,文本被换行,就好像它只是一个普通空格一样。

这里有几件事可能比较重要:

  1. 在 Windows 上我有 QT 5.4 而在 Raspberry Pi 上有 5.2
  2. 我认为这可能与编码有关。问题是我记得在我强制 Pi 上的 G++ 编译器将输入文件作为 CP1250(我将 QMAKE_CXXFLAGS += -finput-charset=CP1250 添加到项目文件)之前它起作用了。好吧,由于某些字符串文字中的变音符号,我不得不进行此调整(否则文本在 raspberry 上完全损坏)。因此,正如我所说,我认为在我更改此编译器开关之前自动换行已经起作用。

但是,除了文本碰巧在不该中断的地方中断之外,任何内容的显示都没有任何问题。请注意,这里没有任何“随机”字符,而是一个常规空格。这绝对是奇怪的,因为这看起来编码没有问题,而是自动换行算法 itslef。但正如我所说,当它认为字符串文字是 Linux 上的默认值(我猜是 UTF-8...)时,它曾经工作过。

至于 QML 文本分配,这些字符串取自 C 数组并使用 QObject::setProperty 分配给 QML 文本,如果这很重要的话......

另请注意,我可能无法将源代码的编码更改为 UTF-8,因为带有字符串的文件也共享给在通信另一端工作的某些嵌入式项目,而这个项目必须是 CP1250,因为IDE。

提前致谢

编辑:我有一些额外的信息:如果我在 Windows 上查看受影响的字符串文字之一,它实际上比在 Raspberry 上编译的相同文字更短,即使源编码设置为 CP1250。例如,nbsp 在 Windows (160d) 上仅编码为一个字节,但在 Raspberry (194d,160d) 上编码为两个字节。这很奇怪,不是吗?我希望在解释 g++ 源代码是在 CP1250 中编码之后,它应该以相同的方式对文字进行编码吗?或者可能不是,因为这是内存中字符串的编码,默认情况下在 Windows 和 Linux 上是不同的。但我仍然看不出问题出在哪里。

最佳答案

正如 Kevin Krammer 所建议的那样,

QString::fromLocal8Bit()

是解决方案。

关于c++ - :QML word wrap with nbsp on Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com