2009-10-28 6 views
13

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

Спасибо.

ответ

10

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

+0

Я, конечно, попробую это, я действительно надеюсь, что это сработает, потому что теперь я пытаюсь использовать GTK, и это не так хорошо, как Qt. – Andrei

+1

Если вы используете C++, я думаю, вам будет удобнее использовать [привязки C++] (http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en), а не простой GTK + сам.Qt и QPainter, GTK + и cairo, gtkmm и cairomm и любые допустимые миксы ... в зависимости от того, что вы хотите, они все допустимые параметры. – ntd

4

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

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

+0

чем k для ответа. Мне просто нужна простая графическая библиотека и графическая библиотека, которые могут работать очень легко, и я не хочу использовать функции библиотеки графического интерфейса для рисования, мне нравится Каир, потому что он прост в использовании и основан на векторе. Может быть, вы можете посоветовать мне другую библиотеку графического интерфейса. – Andrei

+0

Это часть, которую я не понимаю, почему вы не хотите использовать Qt? Возможно, тогда мы можем предложить альтернативу. Qt больше, чем GUI. Графические библиотеки находятся на более низком уровне абстракции, чем библиотеки графического интерфейса. ИМХО, Ты делаешь шаг назад. GTK + - еще одна такая библиотека графического интерфейса (с поддержкой Cairo). – dirkgently

+0

Я попробую графические функции Qt. Я пробовал GTK, но это боль в использовании в проектах. – Andrei

8

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

+0

@amc Это неверно. Большинство устройств рисования основаны на растре, но [есть также векторные устройства] (http://qt-project.org/doc/qt-5/qpaintengine.html#Type-enum): например, [QPdfWriter] (http : //qt-project.org/doc/qt-5/qpdfwriter.html). Сам API 'QPainter' в основном состоит из векторных операций. Это не просто блиттер. – andref

1

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

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