2009-10-28 4 views
13

카이로 그래픽 라이브러리 whith Qt를 사용하고 싶지만 문서를 찾을 수 없습니다. GUI를 whith Qt로 만들고 Qt 윈도우에서 그래픽을 그리기 위해 Cairo를 사용하고 싶습니다.카이로 및 Qt 통합

감사합니다.

답변

10

최근 카이로 버전은 cairo_qt_surface_create(QPainter *painter)으로 생성 된 표면에 그릴 수 있도록 Qt를 지원합니다. 관련 헤더 파일 here을 검사 할 수 있습니다. 이 기능은 아직 기본적으로 실험하고 사용할 수 없기 때문에 어떤 문서가 없습니다 (당신은 카이로 자신이 명시 적으로 configure --enable-qt와 Qt의 지원을 가능하게 컴파일해야

+0

나는 분명히 이것을 시도 할 것이고, 나는 지금 그것이 GTK를 시도하고 Qt만큼 좋지 않기 때문에 그것이 효과가 있기를 바란다. – Andrei

+1

C++을 사용하는 경우 [C++ 바인딩] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en)을 사용하면보다 편하게 사용할 수 있다고 생각합니다. 일반 GTK + 자체.Qt와 QPainter, GTK +와 카이로, gtkmm과 cairomm 그리고 유효한 믹스 ... 당신이 원하는 것에 따라 그들은 모든 유효한 옵션입니다. – ntd

4

경고 : : 이것은 당신이 찾고있는 답변이 될 수 없습니다.

정말 좋습니까? 어떤 목적으로? 이것은 카이로에 근거하여 QPaintDevice을 쓰는 것에 관한 것입니까? Qt는 자체 그래픽 프리미티브를 구현했으며 카이로도 구현합니다. 내가 볼 수있는 유일한 이유는 Qt의 무거운 레이어가 시스템에 간섭하는 것을 원하지 않는다는 것입니다. 마치 카이로의 DirectFB 백엔드를 사용하려고하는 것과 같습니다.하지만 Qt-on-DirectFB와 같은 것들이 있습니다. 그러나 이러한 구현은 비용이 많이 들고 무료입니다. 도서관 간 interop 문제, 카이로 기반 컨텍스트 등의 인쇄와 같은 고유 한 쿼크가 없으면 무료가 아닙니다. 그런 노력이 있다면 Google에서 정기적으로 검색하라고 제안합니다. 이제까지 진행 중이었고 찬성과 반대를 매우 무겁게 달아서 같은 것을 시도하기까지했습니다.

+0

보다 대답은 k입니다. 나는 단순한 그래픽 라이브러리와 매우 easgly togheter 일할 수있는 GUI 라이브러리를 원한다. 그리기를 위해 GUI 라이브러리 함수를 사용하고 싶지 않다. 사용하기 쉽고 벡터 기반이기 때문에 카이로를 좋아한다. 어쩌면 다른 GUI 라이브러리를 추천 해 줄 수 있습니다. – Andrei

+0

이것이 내가 이해할 수없는 부분이며 왜 Qt를 사용하지 않으시겠습니까? 어쩌면 우리는 대안을 제안 할 수 있습니다. Qt는 GUI 이상입니다. 그래픽 라이브러리는 GUI 라이브러리보다 추상화 수준이 낮습니다. IMHO, 너는 한 걸음 물러서 고있다. GTK +는 다른 GUI 라이브러리 (카이로 백엔드 포함)입니다. – dirkgently

+0

Qt 그래픽 함수를 사용해 보겠습니다. 나는 GTK를 시도했지만 프로젝트에서 사용하는 것은 고통이다. – Andrei

8

Qt's Paint System은 매우 좋은 드로잉 라이브러리이고 벡터 기반입니다. 그리고 그것은 이미 있습니다. GUI 툴킷으로 Qt를 선택하면 더 쉽게 얻을 수 없습니다.

+0

@amc 맞지 않습니다. 대부분의 페인트 장치는 래스터 기반이지만 [벡터 장치도 있습니다] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum) : 예를 들어, [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). 'QPainter' API 자체는 대부분 벡터 기반 연산으로 구성됩니다. 그것은 단순히 블리터가 아닙니다. – andref

1
이이 더러운 방법에 의해 달성 될 수있다

:.

  1. 은 카이로 이미지 만들기 표면은, 그 표면에 그립니다.
  2. 통화 cairo_image_surface_get_data을() 픽셀을 얻을 수 있습니다.
  3. 복사합니다 Qt는 위젯의 이미지.