2009-10-28 7 views
13

Voglio usare la libreria grafica di Cairo con Qt, ma non riesco a trovare alcuna documentazione. Voglio solo creare la GUI con Qt e usare Cairo per disegnare la grafica in una finestra Qt.Integrazione Cairo e Qt

Grazie.

risposta

10

La versione recente di cairo supporta Qt consentendo di disegnare su una superficie creata con cairo_qt_surface_create(QPainter *painter): è possibile esaminare il file di intestazione rilevante here. Non c'è alcuna documentazione in quanto questa funzione è ancora in fase sperimentale e disabilitati di default (si dovrebbe compilare cairo te esplicitamente consentendo il supporto Qt con configure --enable-qt

+0

Lo proverò sicuramente, spero davvero che funzioni, perché ora sto provando GTK e non è così buono come Qt. – Andrei

+1

Se stai usando C++ penso che ti starai meglio usando i [collegamenti C++] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en), non semplicemente GTK +.Qt e QPainter, GTK + e cairo, gtkmm e cairomm e qualsiasi combinazione valida ... a seconda di ciò che si desidera sono tutte opzioni valide. – ntd

4

Caveat: Questa non sarà la risposta che stai cercando.

Sei sicuro di volerlo? A che scopo? Si tratta di scrivere un QPaintDevice basato sul Cairo? Qt ha le sue primitive grafiche implementate e così fa Cairo. L'unica ragione per cui posso vedere è che non vuoi che uno strato pesante di Qt interferisca con il tuo sistema (embedded?). È come se si stesse cercando di utilizzare il backend DirectFB di Cairo - ma poi ci sono cose come Qt-on-DirectFB. Tuttavia, notare che un'implementazione di questo tipo è costosa e non libera senza il proprio insieme di quark come problemi di interoperabilità di libreria, stampa da questo contesto basato su Cairo ecc. Suggerirei di effettuare una ricerca regolare su Google per capire se tali sforzi sono/mai stati in corso e soppesare i pro ei contro molto pesantemente prima ancora di provare lo stesso.

+0

Than k è per la risposta. Voglio solo una semplice libreria grafica e una libreria GUI che possa lavorare insieme molto facilmente, e non voglio usare le funzioni della libreria GUI per disegnare, mi piace Il Cairo perché è semplice da usare ed è basato su vettori. Forse puoi raccomandarmi un'altra libreria GUI. – Andrei

+0

Questa è la parte che non capisco, perché non vuoi usare Qt? Forse, possiamo suggerire un'alternativa allora. Qt è più di una GUI. Le librerie grafiche sono ad un livello più basso di astrazione rispetto alle librerie GUI. IMHO, stai facendo un passo indietro. GTK + è un'altra libreria GUI simile (con un backend Cairo). – dirkgently

+0

Proverò le funzioni grafiche Qt. Ho provato GTK ma è un dolore da usare nei progetti. – Andrei

8

Qt's Paint System è una libreria di disegno molto buona e è basata su vettore. Ed è già lì. Se scegli Qt come toolkit GUI, non sarà più semplice.

+0

@amc Questo non è corretto. La maggior parte dei dispositivi di disegno sono basati sul raster, ma [ci sono anche dispositivi vettoriali] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum): ad esempio, [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). L'API 'QPainter' stessa è per lo più costituita da operazioni basate su vettori. Non è semplicemente un blitter. – andref

1

Può essere ottenuto in questo modo sporco:.

  1. creare un'immagine cairo superficie, disegnare su quella superficie.
  2. chiamata cairo_image_surface_get_data() per ottenere i pixel.
  3. Copiare l'immagine di un widget Qt.