我使用Qt's implementation的WebKit来创建富文本编辑器。这个简单的页面:
<html>
<head>
</head>
<body style="white-space:pre" contenteditable="true">
test text
</body>
</html>
在Firefox(17.0.1)或Chrome(23.0.1271.95)中加载时,行为符合预期(按Tab键会改变焦点,但粘贴制表符会插入制表符,将其后面的内容与下一个制表位对齐 - 不是作为单一空间对待)。请注意,Chrome基于WebKit。
在QWebView中加载的相同页面具有以下正文样式:
word-wrap: break-word;
-webkit-nbsp-mode: space;
-webkit-line-break:
after-white-space;
white-space: pre;
(根据内置检查员)。
当按下tab片段后插入片段:
<span class="Apple-tab-span" style="white-space:pre"> </span>
并呈现一个简单的空间。
粘贴制表符时,会添加一个简单的空格(上面没有span标记)。
通过使用toHtml()方法保存html,我可以看到字符是制表符。所以问题是如何说服QWebView“正确”渲染选项卡(将其后面的内容与下一个制表位对齐)。
Qt版本是4.8.3(实际上是在几个月前从主干中构建的)。