Qtの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;
(ビルトインインスペクターによる)。
タブキーを押すと、次のフラグメントが挿入されます。
<span class="Apple-tab-span" style="white-space:pre"> </span>
シンプルなスペースがレンダリングされます。
タブ文字を貼り付けると、単一の単純なスペースが追加されます(上記のスパンタグなし)。
toHtml()メソッドでhtmlを保存すると、文字がタブ文字であることがわかります。したがって、問題は、QWebViewにタブを「適切に」レンダリングするように(それに続くコンテンツを次のタブストップに揃えるために)どのように説得するかです。
Qtバージョンは4.8.3です(実際には数か月前にトランクからビルドされました)。