0

我在 Qt 小部件 QTextEdit、QPlainTextEdit 等中遇到了一些我不想遇到的功能。我实际上不知道如何改变这个问题。

我想加密一些文本,用另一个 unicode 字符替换一个 unicode 字符,即使它是控制字符。

所以我以这种方式删除一个简单的字符串: QChar ch = (QChar)0x20; QChar ch2 = (QChar)0xA0; QString str; str.append(ch); str.append(ch2);

这些是通常的空格 (0x20) 和一些不寻常的不间断空格 (0xA0)。在内存中,字符串是绝对完美的。但是,如果我将其设置为 QTextEdit 的文本,并且ui->txt_ciphered->setPlainText(str);此 No-Break Space (0xA0) 将变为通常的空间。我想那是因为它们用于某些类似的目的,但我仍然想在 TextEdit 中获得无间断空格字符,以便我可以像在记事本 ++ 中那样复制它等。

我怎么能改变这个?

4

1 回答 1

0

QTextEdit 不接受不间断空格,为什么?Qt 编辑控件如何仍然使用不间断空间?

问题是QTextEdit::plainText属性明确地阻止插入不间断空格并将其转换为空格字符。

纯文本:QString

此属性获取文本编辑器的内容并将其设置为纯文本。设置属性时,将删除以前的内容并重置撤消/重做历史记录。

如果文本编辑有其他内容类型,调用 toPlainText() 将不会被纯文本替换。唯一的例外是不间断空格 nbsp;,它将被转换为标准空格。

建议:使用QTextEdit::setText

如果它仍然进行不需要的转换或不正确处理该符号,则需要QTextEdit::setText通过插入包含&nbsp;在 html 标签或<html>My&nbsp;text</html>.

于 2016-06-23T21:08:03.337 回答