Интеграция в Каир и Qt

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

Спасибо.

Ответ 1

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

Ответ 2

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

Ответ 3

Caveat. Это не тот ответ, который вы ищете.

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

Ответ 4

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

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