LINUX.ORG.RU

[Qt] Передача QTextDocument с картинками через буфер обмена


0

1

Здравствуйте!


Имеется некий текст (или даже несколько текстов), который вводится через QTextEdit и может содержать картинки. Нужно передать этот текст через буфер обмена вместе с картинками.

Проблема в том, что QTextDocument не имеет конструктора копирования, который необходим для процедуры помещения в буфер обмена.

Тогда я попробовал сделать из QTextDocument объект QTextDocumentFragment, и передавать его. Он передается, но все картинки теряются. Я поковырялся немного, но так и не понял, включаются ли байты данных картинок в объект QTextDocumentFragment или нет. В документации ничего внятного не написано. Тест показал, что вроде как не включаются, но может я чего неправильно понял, и картинки можно передать в составе объекта QTextDocumentFragment.

Вопрос. Нужно ли дальше ковырять QTextDocumentFragment, или в нем однозначно нет байтов данных для картинок? Кто уже встречался с такой проблемой, что можете сказать?


Ответ на: комментарий от nu11

Нет, потому что я написал, что «Имеется некий текст (или даже несколько текстов)» которые я в своем «самодельном» формате засовываю в буфер обмена (потому что возможно несколько текстов). А copy() просто напрямую копирует в буфер выделенный текст.

xintrea ()

>ковырять QTextDocumentFragment, или в нем однозначно нет байтов данных для картинок

Нет, тебе надо создавать свой multipart mime-тип, сериализовать данные выбранного фрагмента, и сохранять всё в буфер через QMimeData::setData(). При вставке наоборот.

summatus ()

Ну в принципе можно разобраться в документации. Картинки хранятся в QTextDocument, но для передачи через буфер обмена, документ нужно сконвертировать в формат, поддерживающий хранение картинок внутри себя. По идее, сгодится rtf. Так что остается самая муторная часть - написать конвертеры. summatus в общем-то и написал это.

wmd ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.