这可能与"我的程序代码如何通过各种Qt5绘画系统转换到屏幕设备上的GUI?"相同
由于Qt支持各种平台,我的问题只基于Linux和嵌入式Linux(因为两者都是开源操作系统,在绘画方面有所不同:-)
我的问题集中在这些主题上:
-
涂装系统中的
QWidget
、QGraphicsItem
、Rectangle
(QML中)是否不同?它是什么? -
哪一个不使用
QPainter
(QPaintEngine
)类? -
Qt4.8(或Qt5)中实施了多少个喷漆引擎?例如,
QRasterPaintEngine
。 -
如果平台是Linux(支持X11),Qt会使用X11 API来绘制吗?那么X11的油漆引擎和
QRasterPaintEngine
有什么区别呢?如果平台也支持OpenGL,那么Qt将使用X11 API还是OpenGL API? -
如果GPU支持OpenGL,那么Qt可以使用OpenGL;但是如果GPU不支持OpenGL,那么Qt如何处理这种情况呢?
您的问题非常广泛,大多数问题都可以在Qt QPaintEngine文档中得到回答:
https://doc.qt.io/qt-5/qpaintengine.html
QPaintEngine类提供了QPainter的抽象定义绘制到给定平台上的给定设备。Qt 4.0提供了不同油漆工的QPaintEngine预制实现我们支持的后台。我们为每个窗户提供一个油漆引擎我们支持的系统和绘画框架。这包括上的X11Unix/Linux和Mac OS X上的CoreGraphics。此外,我们还提供OpenGL的QPaintEngine实现(可通过QGLWidget访问)和PostScript(可通过X11上的QPSPrinter访问)。此外有一个基于光栅的绘制引擎,当发动机不支持某一功能。