:Linux上的QML自动换行

时间:2016-11-15 00:20:23

标签: c++ qt raspberry-pi qml raspbian

我有以下问题:

当我在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添加到项目文件中)。好吧,由于某些字符串文字中的变音符号,我不得不进行这种调整(否则文本在树莓上完全被破坏)。正如我所说的,我认为在我更改此编译器开关之前,自动换行已经有效。
  3. 但是,除了文本碰巧在他们不应该的地方碰巧之外,显示任何东西都没有一个问题。请注意,除了常规空间之外,没有任何“随机”字符或其他内容。这是绝对奇怪的,因为这看起来编码没有问题,而是使用自动换行算法。但正如我所说,当它认为字符串文字是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上都是不同的。但我仍然没有看到问题出在哪里。

1 个答案:

答案 0 :(得分:0)

正如Kevin Krammer所建议的那样,

QString::fromLocal8Bit()

是解决方案。