QTextEdit更改控制字符

时间:2016-06-23 19:05:02

标签: c++ qt unicode qtwidgets

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

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

所以我用这种方式来识别一个简单的字符串: var content = document.getElementById('title').children[0].innerHTML;

这些是通常的空间(0x20)和一些不寻常的无中断空间(0xA0)。在内存中,字符串是绝对完美的。但是,如果我将其设置为带有 QChar ch = (QChar)0x20; QChar ch2 = (QChar)0xA0; QString str; str.append(ch); str.append(ch2); 的QTextEdit文本,则此无中断空间(0xA0)将成为常用空间。我猜这是因为它们出于类似的目的,但我仍然想在TextEdit中获得No-Break Space字符,这样我就可以像在Notepad ++中那样复制它等等。

我怎么能改变这个?

1 个答案:

答案 0 :(得分:0)

  

QTextEdit不接受非中断空间,为什么?我怎么能够   仍然使用Qt编辑控件的非中断空间?

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

  

plainText:QString

     

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

     

如果文本编辑具有其他内容类型,则不会替换为   如果您调用PlatinText(),则为纯文本。唯一的例外是   非中断空间,将转换为标准   空间。

建议:使用QTextEdit::setText

如果它仍然执行了不需要的转换或者没有正确处理该符号,则需要通过在html标记的信封中插入包含QTextEdit::setText的文本来 选择HTML形式的测试{ {1}}。