Подскажите, как переносится форматирование и rich текст при копировании между совершенно разными редакторами, например Google Docs в браузере и Word на ПК. Что за технология? Более конкретно: есть html в буфере обмена, надо его преобразовать так, чтобы при вставке в редактор был уже текст.
Ответ
В буфере обмена данные могут храниться в нескольких представлениях (mime-type) одновременно.
Приложение-источник (copy) помещает в буфер отдельную копию данных для каждого из поддерживаемых представлений, а потребитель (paste) выбирает наиболее удобный для себя формат, из тех которые понимает. В некоторых приложениях доступен выбор представления, которое будет использовано (см. Paste Special в ворде).
Пример на Qt:
QByteArray svg=BOOST_PP_STRINGIZE(
);
QImage image;
image.loadFromData( svg );
auto*mime=new QMimeData();
mime->setText("Foo"); // Как текст (будет понимать notepad).
mime->setData( "text/html" , "Foo" ); // Поймет ворд
mime->setData( "image/svg+xml" ,svg );
mime->setImageData( image ); // заполняет сразу несколько графических форматов
auto*clip=QApplication::clipboard();
clip->clear();
clip->setMimeData(mime);
Комментариев нет:
Отправить комментарий