Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Ноябрь 03, 2010, 16:02



Название: Передача QTextDocument с картинками через буфер обмена
Отправлено: xintrea от Ноябрь 03, 2010, 16:02
Здравствуйте!


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

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

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

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


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: crossly от Ноябрь 03, 2010, 16:06
а если использовать toHtml() setHtml()??


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: xintrea от Ноябрь 03, 2010, 16:10
а если использовать toHtml() setHtml()??

Тогда картинок точно нет, потому что в HTML-коде нет данных для картинок, например в Mime формате.


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: crossly от Ноябрь 03, 2010, 16:16
стоит прочитать асистент на тему
Код:
void QTextDocument::addResource ( int type, const QUrl & name, const QVariant & resource )


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: xintrea от Ноябрь 03, 2010, 16:35
стоит прочитать асистент на тему
Код:
void QTextDocument::addResource ( int type, const QUrl & name, const QVariant & resource )

Во-первых, там написано про QTextDocument, у которого, как сказано выше, нет конструктора копирования.

Во-вторых, там написано про какой-то кеш ресурсов, совершенно не объясняя что это и где он находится. То есть неясно, включён ли кеш ресурсов в объект QTextDocument, или находится где-то отдельно.

В третьих неясно, как этот кеш ресурсов прикрепить к QTextDocumentFragment, и вообще, содержит ли QTextDocumentFragment в себе хоть какой-то кеш ресурсов, и как до него достучаться.


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: crossly от Ноябрь 03, 2010, 21:52
Цитировать
То есть неясно, включён ли кеш ресурсов в объект QTextDocument, или находится где-то отдельно.
именно он и содержит .... правда в приватной части...
Цитировать
В третьих неясно, как этот кеш ресурсов прикрепить к QTextDocumentFragment, и вообще, содержит ли QTextDocumentFragment в себе хоть какой-то кеш ресурсов, и как до него достучаться.
может брать из QTextDocument
Код:
QTextDocumentFragment	fromHtml ( const QString & text, const QTextDocument * resourceProvider )
QTextDocumentFragment ( const QTextDocument * document )


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: xintrea от Ноябрь 03, 2010, 22:46
может брать из QTextDocument
Код:
QTextDocumentFragment	fromHtml ( const QString & text, const QTextDocument * resourceProvider )
QTextDocumentFragment ( const QTextDocument * document )

Создавать QTextDocumentFragment из QTextDocument я пробовал с помощью как раз вот такого конструктора - в QTextDocumentFragment ресурсы не передаются.

Возможно, что fromHtml() в варианте с использованием resourceProvider будет содержать ресурсы.

Ну я уже все переделал, сделал выдиралку картинок, и перекидываю список картинок через QMap< QString name, QImage image>.


Название: Re: Передача QTextDocument с картинками через буфер обмена
Отправлено: crossly от Ноябрь 03, 2010, 22:51
Цитировать
Ну я уже все переделал, сделал выдиралку картинок, и перекидываю список картинок через QMap< QString name, QImage image>.
ну слава богу что дошло.... :)