Каирская и Qt интеграция - PullRequest
       24

Каирская и Qt интеграция

14 голосов
/ 28 октября 2009

Я хочу использовать графическую библиотеку Cairo с Qt, но не могу найти документацию. Я просто хочу сделать графический интерфейс с Qt и использовать Cairo для рисования графики в окне Qt.

Спасибо.

Ответы [ 4 ]

12 голосов
/ 30 октября 2009

Последняя версия cairo поддерживает Qt, позволяя рисовать на поверхности, созданной с помощью cairo_qt_surface_create(QPainter *painter): вы можете просмотреть соответствующий заголовочный файл здесь . Документации нет, потому что эта функция все еще является экспериментальной и по умолчанию отключена (вы должны явно скомпилировать cairo, включив поддержку Qt с configure --enable-qt.

8 голосов
/ 29 октября 2009

Qt's Paint System - очень хорошая библиотека для рисования, а основана на вектора. И это уже там. Если вы выберете Qt в качестве своего инструментария GUI, он не станет легче.

4 голосов
/ 28 октября 2009

Предостережение : Это не будет ответ, который вы ищете.

Вы уверены, что хотите этого? Для чего? Это о написании QPaintDevice на основе Каира? В Qt реализованы собственные графические примитивы, как и в Каире. Единственная причина, которую я вижу, в том, что вы не хотите, чтобы тяжелый слой Qt вмешивался в вашу систему (встроенный?). Как будто вы пытаетесь использовать DirectFB-бэкэнд Cairo - но есть и такие вещи, как Qt-on-DirectFB. Однако обратите внимание, что такая реализация является дорогостоящей и не бесплатной без собственного набора кварков, таких как проблемы взаимодействия библиотек, печать из этого контекста в Каире и т. Д. Я бы посоветовал вам сделать регулярный поиск в Google, чтобы выяснить, являются ли такие усилия когда-либо были в процессе и очень тяжело взвесить все за и против, прежде чем пытаться сделать то же самое.

1 голос
/ 07 мая 2014

Это может быть достигнуто этим грязным способом:

  1. Создайте поверхность изображения Каира, нарисуйте на этой поверхности.
  2. Вызовите cairo_image_surface_get_data (), чтобы получить пиксели.
  3. Скопируйте изображение в виджет Qt.
...