2009-10-28 15 views
13

Chcę używać biblioteki graficznej Kairu z Qt, ale nie mogę znaleźć żadnego dokumentu. Po prostu chcę zrobić GUI z Qt i użyć Kairu do rysowania grafiki w oknie Qt.Integracja z Kairem i Qt

Dzięki.

Odpowiedz

10

Najnowsza wersja cairo obsługuje Qt, umożliwiając rysowanie na powierzchni utworzonej za pomocą cairo_qt_surface_create(QPainter *painter): można sprawdzić odpowiedni plik nagłówkowy here. Nie ma dokumentacji, ponieważ ta funkcja jest wciąż w fazie eksperymentalnej i domyślnie wyłączone (należy skompilować Cairo bardziej jawnie umożliwiające obsługę Qt z configure --enable-qt

+0

Z pewnością spróbuję tego, naprawdę mam nadzieję, że działa, ponieważ teraz próbuję GTK i nie jest tak dobry jak Qt. – Andrei

+1

Jeśli korzystasz z C++, myślę, że będziesz bardziej komfortowo używając [powiązań C++] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en), nie zwykły GTK + się.Qt i QPainter, GTK + i cairo, gtkmm i cairomm oraz dowolna poprawna kombinacja ... w zależności od tego, co chcesz, wszystkie są poprawnymi opcjami. – ntd

4

Zastrzeżenie: To nie będzie odpowiedź, której szukasz.

Czy na pewno tego chcesz? W jakim celu? Czy chodzi o pisanie QPaintDevice w oparciu o Kair? Qt ma zaimplementowane własne prymitywy graficzne, podobnie jak Kair. Jedynym powodem, dla którego widzę, jest to, że nie chcesz, aby ciężka warstwa Qt zakłócała ​​twój system (osadzony?). To tak, jakbyś próbował korzystać z zaplecza DirectFB w Kairze - ale są też takie rzeczy jak Qt-on-DirectFB. Należy jednak zauważyć, że taka implementacja jest kosztowna i nieodpłatna bez własnego zestawu kwarków, takich jak problemy z bibliotekami, drukowanie z tego kontekstu w Kairze itp. Proponuję regularne wyszukiwanie w Google, aby dowiedzieć się, czy takie wysiłki są/kiedykolwiek były w toku i bardzo ciężko zważyły ​​za i przeciw, zanim nawet spróbowali tego samego.

+0

niż K dla odpowiedzi. Po prostu chcę prostej biblioteki graficznej i biblioteki GUI, która może pracować bardzo łatwo, i nie chcę używać funkcji biblioteki GUI do rysowania, lubię Kair, ponieważ jest prosty w użyciu i oparty na wektorach. Może możesz polecić mi inną bibliotekę GUI. – Andrei

+0

To jest część, której nie rozumiem, dlaczego nie chcesz używać Qt? Być może, możemy zaproponować alternatywę. Qt to coś więcej niż GUI. Biblioteki graficzne mają niższy poziom abstrakcji niż biblioteki GUI. IMHO, cofasz się o krok. GTK + to kolejna taka biblioteka GUI (z zapleczem Cairo). – dirkgently

+0

Spróbuję funkcji graficznych Qt. Próbowałem GTK, ale jest to trudny do wykorzystania w projektach. – Andrei

8

Qt's Paint System jest bardzo dobrą biblioteką rysunkową, a jest wektorem opartym na wektorach. I już tam jest. Jeśli wybierzesz Qt jako zestaw narzędzi GUI, nie będzie to łatwiejsze.

+0

@amc To nie jest poprawne. Większość urządzeń do malowania jest opartych na rastrze, ale [są też urządzenia wektorowe] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum): na przykład [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). Samo API 'QPainter' składa się głównie z operacji opartych na wektorach. To nie jest po prostu blitter. – andref

1

To można osiągnąć za pomocą tej brudnej drodze.

  1. Utwórz cairo zdjęcie powierzchnia, rysować na tej powierzchni.
  2. połączeń cairo_image_surface_get_data(), aby uzyskać pikseli.
  3. skopiować obraz do widżetu Qt.