QCustomSeriesCanvasRenderer Class
当使用高性能画布绘制后端时,QCustomSeriesCanvasRenderer 类允许为QCustomSeries 实现自定义渲染。更多内容...
| 标题: | #include <QCustomSeriesCanvasRenderer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Graphs) target_link_libraries(mytarget PRIVATE Qt6::Graphs) |
| qmake: | QT += graphs |
| 自: | Qt 6.12 |
公共函数
| QCustomSeriesCanvasRenderer() | |
| virtual void | canvasPrePaint(QCanvasPainter *p) |
| virtual void | initializeResources(QCustomSeries *series, QCanvasPainter *p) |
| virtual void | synchronizeData(QCustomSeries *series, QCanvasPainterItem *item) |
详细描述
实现 canvasPaint() 方法以绘制QCustomSeries 。使用QCustomSeries::setCustomSeriesPainter() 为系列设置绘图器,该系列随后通过 QCustomSeries::customSeriesPainter() 公开该绘图器。
canvasPaint() 和canvasPrePaint() 由Qt Quick 场景图渲染线程调用,与initializeResources() 和synchronizeData() 不同,它们不会接收所属的QCustomSeries 。请将 canvasPaint() 所需的任何内容复制到synchronizeData() 中的渲染器实例中,该函数在 GUI 线程被阻塞时运行,是唯一可以安全读取 GUI 线程数据的地方。
另请参阅 QCustomSeries 和QCustomSeries::setCustomSeriesPainter()。
成员函数文档
[constexpr noexcept default] QCustomSeriesCanvasRenderer::QCustomSeriesCanvasRenderer()
默认——构造一个QCustomSeriesCanvasRenderer 的实例。
[virtual] void QCustomSeriesCanvasRenderer::canvasPrePaint(QCanvasPainter *p)
重写此方法,以基于synchronizeData() 此前复制到该实例中的状态,使用p 进行渲染准备。该方法由渲染线程在调用同一实例的 canvasPaint() 之前立即调用;在此处请勿访问系列或项的状态。
另请参阅 canvasPaint ()。
[virtual] void QCustomSeriesCanvasRenderer::initializeResources(QCustomSeries *series, QCanvasPainter *p)
重写此方法,使用p 为series 初始化资源。该方法会在首次调用series 的synchronizeData()之前被调用一次。
另请参阅 QCanvasPainter ::addImage 和 QCanvasPainter::createCanvas。
[virtual] void QCustomSeriesCanvasRenderer::synchronizeData(QCustomSeries *series, QCanvasPainterItem *item)
重写此方法,将item 中用于绘制series 所需的数据复制到此渲染器实例中。每当需要重新绘制series 时,该方法会在调用 canvasPaint() 之前被调用。
此方法是唯一可以安全地直接读取series 或item 的 GUI 所属状态的地方,因为它是在 GUI 线程被阻塞在Qt Quick 同步点时运行的。请勿在 canvasPaint() 或canvasPrePaint() 中访问该状态。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.