2009-10-28 19 views
13

Quiero usar la biblioteca de gráficos de Cairo con Qt, pero no puedo encontrar ninguna documentación. Solo quiero hacer la GUI con Qt y usar Cairo para dibujar gráficos en una ventana de Qt.Integración de Cairo y Qt

Gracias.

Respuesta

10

La versión reciente de cairo admite Qt al permitir dibujar en una superficie creada con cairo_qt_surface_create(QPainter *painter): puede inspeccionar el archivo de encabezado relevante here. No hay documentación, ya que esta función es todavía experimental y desactivados por defecto (que debe compilar Cairo a sí mismo de forma explícita que permite el apoyo de Qt con configure --enable-qt

+0

Voy a intentar esto, realmente espero que funcione porque ahora estoy probando GTK y no es tan bueno como Qt. – Andrei

+1

Si está usando C++, creo que se sentirá más cómodo al usar los [enlaces de C++] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en), no llano GTK + sí mismo.Qt y QPainter, GTK + y cairo, gtkmm y cairomm y cualquier combinación válida ... dependiendo de lo que quieras, todas son opciones válidas. – ntd

4

Advertencia: Esta no va a ser la respuesta que está buscando.

¿Estás seguro de que quieres esto? ¿A que final? ¿Se trata de escribir un QPaintDevice basado en El Cairo? Qt tiene sus propias primitivas gráficas implementadas, al igual que Cairo. La única razón por la que puedo ver es que no quieres que una capa pesada de Qt interfiera con tu sistema (¿incrustado?). Es como si estuvieras tratando de utilizar el back end de DirectFB en El Cairo, pero luego hay cosas como Qt-on-DirectFB. Sin embargo, tenga en cuenta que una implementación de este tipo es costosa y no gratuita sin su propio conjunto de quarks, como problemas de interoperabilidad de bibliotecas, impresión desde este contexto basado en El Cairo, etc. Le sugiero que haga una búsqueda regular en Google para determinar si tales esfuerzos son/alguna vez estuvieron en marcha y sopesaron los pros y los contras mucho antes de siquiera intentar lo mismo.

+0

que k es la respuesta. Solo quiero una biblioteca de gráficos simple y una biblioteca de GUI que pueda funcionar muy fácilmente, y no quiero usar las funciones de biblioteca de la GUI para dibujar, me gusta Cairo porque es fácil de usar y está basado en vectores. Quizás puedas recomendarme otra biblioteca GUI. – Andrei

+0

Esta es la parte que no entiendo, ¿por qué no quieres usar Qt? Tal vez, podemos sugerir una alternativa entonces. Qt es más que GUI. Las bibliotecas de gráficos tienen un nivel de abstracción menor que las bibliotecas de GUI. En mi humilde opinión, estás dando un paso atrás. GTK + es otra biblioteca de GUI (con backend de El Cairo). – dirkgently

+0

Voy a probar las funciones gráficas de Qt. Probé GTK, pero es un dolor usarlo en proyectos. – Andrei

8

Qt's Paint System es una muy buena biblioteca de dibujos y es basada en vectores. Y ya está allí. Si elige Qt como su GUI toolkit, no puede ser más fácil.

+0

@amc Eso no es correcto. La mayoría de los dispositivos de pintura están basados ​​en ráster, pero [también hay dispositivos vectoriales] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum): por ejemplo, [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). La API 'QPainter' en sí misma se compone principalmente de operaciones basadas en vectores. No es simplemente un blitter. – andref

1

Se puede lograr de esta manera sucia:.

  1. crear una imagen Cairo superficie, dibujar en esa superficie.
  2. cairo_image_surface_get_data llamada() para obtener los píxeles.
  3. copiar la imagen en un widget de Qt.