2009-10-28 41 views
13

我想用开罗图形库连同Qt,但是我找不到任何文档。我只是想让GUI使用Qt,并使用Cairo在Qt窗口中绘制图形。开罗和Qt集成

谢谢。

回答

10

最近版本的cairo通过允许绘制到使用cairo_qt_surface_create(QPainter *painter)创建的曲面来支持Qt:您可以检查相关头文件here。有没有文档,因为这个功能还是默认的实验和残疾人(你应该编译开罗自己明确地实现与configure --enable-qt Qt的支持

+0

我一定会尝试这个,我真的希望它能够工作,因为现在我正在尝试GTK,并且它不如Qt。 – Andrei 2009-10-30 10:07:06

+1

如果您使用的是C++,我想您会更加适应使用[C++绑定](http://library.gnome.org/devel/gtkmm-tutorial/unstable/index-info.html.en),而不是纯GTK +自己。Qt和QPainter,GTK +和开罗,gtkmm和cairomm以及任何有效的混音......取决于你想要什么,它们都是有效的选项。 – ntd 2009-10-30 13:18:59

4

警告:这不会是你正在寻找的答案。

你确定你想要?为了什么目的?这是关于编写一个基于开罗的QPaintDevice? Qt有自己的图形原语,开罗也有。我能看到的唯一原因是你不希望Qt的一层沉重的层干扰你的系统(嵌入式?)。这就像您正在尝试使用开罗的DirectFB后端 - 但之后有像Qt-on-DirectFB这样的东西。但是,请注意,这样的实施是昂贵的,没有自己的一套夸克,如图书馆互操作问题,从这个开罗的背景下打印等,我建议你定期搜索谷歌,以确定这样的努力是/甚至在尝试同样的事情之前,他们都非常沉重地衡量利弊。

+0

比k的答案。 我只想要一个简单的图形库和一个可以非常容易工作的GUI库,而且我不想使用GUI库函数进行绘图,我喜欢开罗,因为它易于使用并且基于矢量。也许你可以推荐我另一个GUI库。 – Andrei 2009-10-28 21:09:29

+0

这是我不明白的部分,你为什么不想用Qt?也许,我们可以提出一个替代方案。 Qt不仅仅是GUI。图形库与GUI库相比处于较低的抽象级别。恕我直言,你正在退后一步。 GTK +是另一个这样的GUI库(具有开罗后端)。 – dirkgently 2009-10-29 03:48:00

+0

我会尝试Qt图形功能。我尝试了GTK,但在项目中使用它是一种痛苦。 – Andrei 2009-10-29 09:11:10

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)。 QPainter API本身主要由基于矢量的操作组成。这不仅仅是一个阻击剂。 – andref 2014-03-25 19:45:14

1

它可以通过这种肮脏的方式来实现:

  1. 创建开罗图像表面,绘制表面上。
  2. 呼叫cairo_image_surface_get_data()来获取像素。
  3. 将映像复制到Qt物件。