在本页

QCanvasPainterFactory Class

QCanvasPainterFactory 管理QCanvasPainter 和相关渲染引擎的实例。更多

Header: #include <QCanvasPainterFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Qt 6.11
状态技术预览版

公共函数

QCanvasPainterFactory()
QCanvasPainter *create(QRhi *rhi)
void destroy()
bool isValid() const
QCanvasRhiPaintDriver *paintDriver()
QCanvasPainter *painter()

静态公共成员

QCanvasPainterFactory *sharedInstance(QRhi *rhi)

详细说明

通过QCanvasPainter 渲染的应用程序不会自己创建 painter 类的实例,而是使用 QCanvasPainterFactory。

注意: 该类仅在使用QCanvasPainter 而不使用QCanvasPainterWidgetQCanvasPainterItem 等方便类时才有意义,因为这些方便类为应用程序提供了一个QCanvasPainter 实例。

以下是一个示例代码片段,用于获取QCanvasPainter ,以便与现有的、已成功初始化的QRhi 一起使用:

std::unique_ptr<QCanvasPainterFactory> factory(new QCanvasPainterFactory);
QCanvasPainter *painter = factory->create(rhi);
QCanvasRhiPaintDriver *paintDriver = factory->paintDriver();

建议所有在同一线程上操作同一QRhi 的绘制代码共享和重用同一QCanvasPainter ,而不是在每个组件中都有一个专用的绘制器(因此也是工厂)。这可以通过调用sharedInstance() 来实现,而不是构建一个新的 QCanvasPainterFactory:

QCanvasPainterFactory *factory = QCanvasPainterFactory::sharedInstance(rhi);
QCanvasPainter *painter = factory->painter();
QCanvasRhiPaintDriver *paintDriver = factory->paintDriver();

成员函数文档

QCanvasPainterFactory::QCanvasPainterFactory()

构造函数。

另请参见 sharedInstance().

QCanvasPainter *QCanvasPainterFactory::create(QRhi *rhi)

如果该工厂尚未初始化QCanvasPainter 渲染基础设施,则初始化该基础设施。

如果无法初始化呈现器,则返回绘制器或 null。

除非再次调用destroy() 和 create(),否则该工厂将与rhi 关联,并且不能与任何其他QRhi 一起使用。

重复调用该函数不会产生任何影响,也不会造成危害。如果需要重新初始化绘画基础架构,请先调用destroy() ,可能会使用不同的rhi

注: 如果sharedInstance() 用于获取工厂实例,则无需调用此函数。

另请参阅 destroy()、isValid() 和painter()。

void QCanvasPainterFactory::destroy()

拆除渲染基础结构。通常情况下无需调用此函数。相反,它将在create() 之后的情况下使用。

另请参阅 create()。

bool QCanvasPainterFactory::isValid() const

如果create() 已成功调用,则返回 true。

QCanvasRhiPaintDriver *QCanvasPainterFactory::paintDriver()

返回油漆驱动程序对象,如果isValid() 为 false,则返回 null。

注意: 返回的对象不归调用者所有。

QCanvasPainter *QCanvasPainterFactory::painter()

返回绘制器,如果isValid() 为 false,则返回 null。

注意: 返回的对象不归调用者所有。

[static] QCanvasPainterFactory *QCanvasPainterFactory::sharedInstance(QRhi *rhi)

返回与给定rhi 相关联的QCanvasPainterFactory 实例。

使用相同的rhi 调用此函数将始终返回相同的QCanvasPainterFactory

无需对返回的工厂调用create() ,也可以立即查询painter() ,因为结果总是已经初始化,这意味着isValid() 返回 true。

该函数是线程安全的。不过,QRhi 的线程规则照常适用:一个QRhi 对象,以及与之相关的QCanvasPainterFactoryQCanvasRhiPaintDriverQCanvasPainter 的实例,预计都将在同一个单线程上使用QRhi

注意: 返回的QCanvasPainterFactory 不归调用者所有,当rhi 被销毁时,它将失效。

另请参阅 painter() 。

© 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.