Продолжаю решать задачку очистки форматирования в QTextEdit. Я решил проблему «съедания» пробелов при вызове QTextEdit::insertHtml() путем замены их в HTML на спецсимвол UFFFD (Replacement Character) перед передачей в insertHtml(), и последующей замены уже в QTextDocument методами курсора.
Но тут вылезла другая проблема.
Если взять HTML-код методом:
textArea->textCursor().selection().toHtml()
засунуть его в QDomDocument, получить из DOM код XML и вставить его на прежнее место через QTextEdit::insertHtml(), то текст изменится. При каких условиях? А вот при каких.
Если на экране мы видим четыре пробела и текст, исходный HTML будет следующий:
<p>
<span> text</span>
</p>
При парсинге в QDomDocument, текстовый узел будет содержать текст
" text"
Если на экране мы видим четыре пробела и ссылку, HTML будет следующий:
<p>
<span> </span>
<a href="http://yandex.ru">
<span>text</span>
</a>
</p>
При парсинге в QDomDocument, текстовой ноды из четырех пробелов внутри элемента span не будет! И таким образом, когда мы конвертнем обратно DOM в XML, эти четыре пробела пропадут. А нужно, чтоб они сохранились.
Вопрос. Как обойти такую проблему?