Как реализовать сериализацию QTextDocument

Этот вопрос я задавал ранее и только что получил ответ, что для этого есть открытая ошибка. Но это действительно необходимая функция, и, я думаю, что каждый программист Qt, который программирует более или менее серьезное приложение, вполне вероятно, что там используется QTextEdit, а данные, вставляемые в QTextEdit, сериализуются и десериализуются. Таким образом, я считаю этот вопрос очень важным, и он может быть полезен для многих разработчиков Qt. Поэтому я решил обсудить с хорошими программистами, как реализовать оператор<< (QDataStream, QTextDocument). В противном случае мы должны подождать, когда ребята из Qt будут любезны сделать это сами:).

Так сказать в QTextEdit у меня есть несколько картинок и текста. В разных фрагментах текст имеет разный формат. Как получить контент такого рода QTextEdit и как его сериализовать, чтобы потом показать как было?

РЕДАКТИРОВАТЬ: я знаю, что я могу получить форматированный текст и изображения с помощью метода documnet(), который возвращает QTextDocument. Я также знаю, что QTextDocument не имеет оператора<< (QDataStream, QTextDocument), и есть запрос на запись этого оператора, но он все еще открыт. Поэтому, пожалуйста, помогите мне написать этот метод. Я думаю, что я должен унаследовать класс QTextDocument, а затем добавить новый член (контейнер), который хранит все имена ресурсов, которые присутствуют в QTextEdit. Затем я должен сериализовать все ресурсы, перебирая их, используя контейнер, который я определил. Это хорошее решение? Если да, то не могли бы вы помочь мне реализовать? Если нет, то, пожалуйста, предоставьте мне лучшую идею.

2 ответа

Решение

Вы уже задавали этот вопрос в апреле:

Qt - сериализация / десериализация текста и изображения

Ответы все те же.

  1. Подождите, пока Qt исправит QTBUG-9258
  2. Выполните сериализацию самостоятельно

В зависимости от ваших потребностей, быстрый и грязный способ сделать это - получить представление HTML содержимого с помощью QTextEdit:: toHtml, а затем кодировать его с помощью base64. Я не уверен, как это будет работать с фотографиями.

Пожалуйста, не размещайте те же вопросы.

Другие вопросы по тегам