#cpp #редактор_текста
Подскажите, как переносится форматирование и rich текст при копировании между совершенно разными редакторами, например Google Docs в браузере и Word на ПК. Что за технология? Более конкретно: есть html в буфере обмена, надо его преобразовать так, чтобы при вставке в редактор был уже текст.
Ответы
Ответ 1
В буфере обмена данные могут храниться в нескольких представлениях (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);
Комментариев нет:
Отправить комментарий