Интеграция Cairo и Qt

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

спасибо.

4 ответов


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


в Qt краски системы очень хорошая библиотека чертежей и is векторным. И он уже там. Если вы выбираете Qt в качестве инструментария GUI, это не может быть проще.


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

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


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

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