5

它可能与“我的程序代码如何通过各种Qt5绘画系统转换到屏幕设备上的GUI?”相同。

由于Qt支持各种平台,所以我的问题只基于Linux和嵌入式Linux(因为两者都是开源操作系统,绘画不同:-))。</p>

我的问题集中在这些主题上:

  1. QWidget,<code>QGraphicsItem,<code>Rectangle(在 QML 中)在绘画系统中有什么不同吗?还有,这是什么?

  2. 哪个不用QPainter(<code>QPaintEngine)类?

  3. Qt4.8(或Qt5)中实现了多少绘画引擎?例如,QRasterPaintEngine

  4. 如果平台是 Linux(支持 X11),Qt 会使用 X11 API 进行绘制吗?那么X11的喷漆引擎和X11有什么区别QRasterPaintEngine呢?如果平台也支持OpenGL,那么Qt会使用X11 API还是OpenGL API?

  5. 如果 GPU 支持 OpenGL,那么 Qt 可能会使用 OpenGL;但是如果GPU不支持OpenGL,那么Qt是如何处理这种情况的呢?

4

1 回答 1

4

您的问题非常广泛,其中大部分都可以在 Qt QPaintEngine 文档中得到回答:

https://doc.qt.io/qt-5/qpaintengine.html

QPaintEngine 类提供了 QPainter 如何在给定平台上绘制给定设备的抽象定义。Qt 4.0 为我们支持的不同画家后端提供了几个预制的 QPaintEngine 实现。我们为我们支持的每个窗口系统和绘画框架提供一个绘画引擎。这包括 Unix/Linux 上的 X11 和 Mac OS X 上的 CoreGraphics。此外,我们为 OpenGL(可通过 QGLWidget 访问)和 PostScript(可通过 X11 上的 QPSPrinter 访问)提供 QPaintEngine 实现。此外,还有一个基于光栅的绘制引擎,当引擎不支持某种功能时,它可以作为后备。

于 2012-01-28T17:47:05.320 回答