Formato de portapapeles de gráficos vectoriales para Qt
Pregunta
Quiero que mi aplicación Qt pueda guardar gráficos vectoriales simples en el portapapeles de una manera compatible. En Windows quiero poder pegar los gráficos en Microsoft Word o Powerpoint. En Linux quiero ser compatible con Open Office.
¿Qué formato recomendarías? ¿Qt puede generar EMF de una manera fácil? ¿SVG es una opción?
Actualización:
Mi plan actual es agregar una pieza de código win32 nativo para representar los gráficos en fem en Windows. Este código no estará disponible en Linux.
Solución
La clase QGraphicsView y sus ayudantes asociados pueden renderizar a un metarchivo QT formatee a través de la clase QPicture (para la cual puede escribir un traductor a EMF) , a SVG a través de la clase QSVGGenerator y a postscript / pdf a través de QPrinter . También se puede procesar en formatos de mapa de bits y varios otros objetivos.
AFAIK no tiene una función genérica de 'renderizar a EMF' - tendrías que escribir en algo más como el Metarchivo QT y convertir a EMF. Si solo necesita un subconjunto de las primitivas gráficas, es posible que solo necesite admitir ese subconjunto en el traductor. De lo contrario, podría pasar de SVG, que puede obtener directamente de QT a través de QSVGGenerator.
Otros consejos
Tengo una clase PyQt QPaintEngine que genera EMF aquí: https: / /github.com/jeremysanders/veusz/blob/master/document/emf_export.py . Utiliza la biblioteca pyemf, pero creo que sería bastante fácil portar a C ++. Desafortunadamente, los archivos no son compatibles con OpenOffice ya que OO tiene un soporte de ruta bastante roto en archivos EMF. También convierte el texto en rutas para WYSIWYG.