Интеграция 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, чтобы выяснить, если такие усилия/когда-либо были в процессе и взвесить плюсы и минусы очень сильно, прежде чем даже пытаться то же самое.
Это может быть достигнуто таким грязным способом:
- создайте поверхность изображения cairo, нарисуйте на этой поверхности.
- вызовите cairo_image_surface_get_data (), чтобы получить пиксели.
- скопируйте изображение в виджет Qt.