Каир и интеграция Qt
-
08-07-2019 - |
Вопрос
Я хочу использовать графическую библиотеку Cairo с Qt, но не могу найти никакой документации.Я просто хочу создать графический интерфейс Qt и использовать Cairo для рисования графики в окне Qt.
Спасибо.
Решение
Последняя версия cairo поддерживает Qt, позволяя рисовать на поверхности, созданной с помощью cairo_qt_surface_create(QPainter *painter)
:вы можете проверить соответствующий файл заголовка здесь.Документации нет, поскольку эта функция все еще является экспериментальной и по умолчанию отключена (вам следует скомпилировать cairo самостоятельно, явно включив поддержку Qt с помощью configure --enable-qt
.
Другие советы
Система рисования Qt это очень хорошая библиотека рисования и является на векторной основе.И оно уже здесь.Если вы выберете Qt в качестве инструментария для графического пользовательского интерфейса, все станет еще проще.
Предостережение:Это не тот ответ, который вы ищете.
Вы уверены, что хотите этого?С какой целью?Речь идет о написании QPaintDevice
на базе Каира?В Qt реализованы собственные графические примитивы, как и в Cairo.Единственная причина, которую я вижу, заключается в том, что вы не хотите, чтобы тяжелый уровень Qt мешал вашей системе (встроенной?).Это похоже на то, что вы пытаетесь использовать серверную часть DirectFB Cairo, но есть такие вещи, как Qt-on-DirectFB.Однако обратите внимание, что такая реализация является дорогостоящей и платной без собственного набора кварков, таких как проблемы взаимодействия библиотек, печать из этого контекста на основе Каира и т. д.Я бы посоветовал вам регулярно искать в Google, чтобы выяснить, предпринимались ли/когда-либо такие усилия, и очень тщательно взвесить все за и против, прежде чем даже пытаться сделать то же самое.
Этого можно добиться таким грязным способом:
- Создайте поверхность изображения Каира и нарисуйте на этой поверхности.
- Вызовите cairo_image_surface_get_data(), чтобы получить пиксели.
- Скопируйте изображение в виджет Qt.