2009-10-28 31 views
13

Tôi muốn sử dụng thư viện đồ họa Cairo wht Qt, nhưng tôi không thể tìm thấy bất kỳ documenattion nào. Tôi chỉ muốn tạo GUI với Qt và sử dụng Cairo để vẽ đồ họa trong cửa sổ Qt.Cairo và tích hợp Qt

Cảm ơn.

Trả lời

10

Phiên bản gần đây của cairo hỗ trợ Qt bằng cách cho phép vẽ lên bề mặt được tạo bằng cairo_qt_surface_create(QPainter *painter): bạn có thể kiểm tra tệp tiêu đề có liên quan here. Không có tài liệu hướng dẫn vì tính năng này vẫn còn thực nghiệm và tắt theo mặc định (bạn nên biên dịch cairo mình explicitely cho phép sự hỗ trợ Qt với configure --enable-qt

+0

Tôi chắc chắn sẽ thử điều này, tôi thực sự hy vọng nó hoạt động vì bây giờ tôi đang thử GTK và nó không tốt như Qt. – Andrei

+1

Nếu bạn đang sử dụng C++, tôi nghĩ bạn sẽ thoải mái hơn khi sử dụng [C++ bindings] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en), chứ không phải đồng bằng GTK + chính nó.Qt và QPainter, GTK + và cairo, gtkmm và cairomm và bất kỳ kết hợp hợp lệ nào ... tùy thuộc vào những gì bạn muốn chúng đều là các tùy chọn hợp lệ. – ntd

4

Caveat: Đây không phải là câu trả lời bạn đang tìm kiếm.

Bạn có chắc chắn muốn điều này không? Để kết thúc? Đây có phải là viết một số QPaintDevice dựa trên Cairo không? Qt có đồ họa nguyên thủy của riêng nó được triển khai và Cairo cũng vậy. Lý do duy nhất tôi có thể thấy là bạn không muốn một lớp nặng Qt can thiệp vào hệ thống của bạn (được nhúng?). Nó giống như bạn đang cố gắng sử dụng DirectFB phụ trợ của Cairo - nhưng sau đó có những thứ như Qt-on-DirectFB. Tuy nhiên, lưu ý rằng việc triển khai như vậy là tốn kém và không miễn phí nếu không có bộ quark riêng như các vấn đề liên quan đến thư viện, in từ bối cảnh dựa trên Cairo này. Tôi khuyên bạn nên thực hiện tìm kiếm thông thường trên Google để tìm ra những nỗ lực đó bao giờ được tiến hành và cân nhắc những ưu và khuyết điểm rất nhiều trước khi thậm chí cố gắng như vậy.

+0

Thần k cho câu trả lời. Tôi chỉ muốn một thư viện đồ họa đơn giản và một thư viện GUI có thể làm việc rất dễ dàng và tôi không muốn sử dụng chức năng thư viện GUI để vẽ, tôi thích Cairo vì nó đơn giản để sử dụng và dựa trên vector. Có lẽ bạn có thể giới thiệu cho tôi một thư viện GUI khác. – Andrei

+0

Đây là phần tôi không hiểu, tại sao bạn không muốn sử dụng Qt? Có lẽ, chúng tôi có thể đề xuất một thay thế sau đó. Qt là nhiều hơn GUI. Các thư viện đồ họa ở mức trừu tượng thấp hơn các thư viện GUI. IMHO, bạn đang lùi lại một bước. GTK + là một thư viện GUI khác (với một phụ trợ của Cairo). – dirkgently

+0

Tôi sẽ thử các chức năng đồ họa Qt. Tôi đã thử GTK nhưng đó là một nỗi đau để sử dụng trong các dự án. – Andrei

8

Qt's Paint System là thư viện vẽ rất tốt và dựa trên vector. Và nó đã ở đó rồi. Nếu bạn chọn Qt làm bộ công cụ GUI, nó không thể dễ dàng hơn.

+0

@amc Điều đó không đúng. Hầu hết các thiết bị sơn đều dựa trên raster, nhưng [cũng có các thiết bị vectơ] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum): ví dụ, [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). Bản thân API QPainter' chủ yếu bao gồm các hoạt động dựa trên vectơ. Nó không chỉ đơn giản là một kẻ hốt hoảng. – andref

1

Nó có thể được thực hiện bằng cách bẩn này:.

  1. Tạo một hình ảnh cairo bề mặt, vẽ trên bề mặt đó.
  2. Gọi cairo_image_surface_get_data() để có được các điểm ảnh.
  3. Sao chép hình ảnh vào một widget Qt.