Qt4.8(或Qt 5)如何进行绘画?

gem*_*eld 5 qt paint qt5

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

由于Qt支持各种平台,因此我的问题仅基于Linux和嵌入式Linux(因为它们都是开源os,并且在绘画方面也有所不同:-))?

我的问题集中在以下主题上:

  1. QWidgetQGraphicsItemRectangle(在QML中)绘画系统不同?还有,这是什么?

  2. 哪个不使用QPainterQPaintEngine?类?

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

  4. 如果平台是Linux(支持X11),Qt会使用X11 API绘画吗?那么,X11的Paint Engine和之间有什么区别QRasterPaintEngine?如果平台还支持OpenGL,那么Qt将使用X11 API还是OpenGL API?

  5. 如果GPU支持OpenGL,则Qt可以使用OpenGL;否则,Qt可以使用OpenGL。但是如果GPU不支持OpenGL,那么Qt如何处理这种情况?

Phi*_*ent 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 实现。此外,还有一个基于光栅的绘画引擎,当引擎不支持某种功能时,可以作为后备。