class QQmlIncubationController#

QQmlIncubationController 实例驱动 QQmlIncubators 的进度。 更多

概要#

方法#

虚函数#

注意

本文档可能包含从C++自动翻译到Python的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来通知我们。

详细描述#

为了异步执行并避免在应用程序中出现延迟或冻结,QQmlIncubators创建对象的流程只能在应用程序的空闲时间进行驱动。QQmlIncubationController 允许应用程序精确控制此处理的何时进行、多久进行及多久一次。

应通过调用 QQmlIncubationController 方法并在一个 QQmlEngine 上设置来创建该类的派生实例。处理将通过根据应用程序的需求调用 incubateFor()incubateWhile() 方法来控制。

例如,这是一个孵化控制器示例,它会在每16毫秒中孵化最多5毫秒。

class PeriodicIncubationController : public QObject,
                                     public QQmlIncubationController
{
public:
    PeriodicIncubationController() {
        startTimer(16);
    }

protected:
    void timerEvent(QTimerEvent *) override {
        incubateFor(5);
    }
};

尽管示例有效,但它相当简化。现实世界的孵化控制器尝试最大化占用空闲时间,同时不影响应用程序。像上面那样使用静态的5毫秒可能会导致某些帧中出现空闲时间,同时在其他帧中干扰应用程序。

QQuickWindow、QQuickView 和 QQuickWidget 都预先创建了一个孵化控制器,该控制器使用更智能的算法将孵化分散到多个帧中。您很少需要自己编写。

__init__()#

创建一个新的孵化控制器。

engine()#
返回类型:

QQmlEngine

返回此孵化控制器所设置的 QQmlEngine 或 0(如果没有设置在任何引擎上)。

incubateFor(msecs)#
参数:

msecs – int

孵化对象 msecs 毫秒,或者直到没有更多对象需要孵化。

incubateWhile(flag[, msecs=0])#
参数:
  • flagatomic

  • msecs – int

flag 所指的原子布尔值为真时孵化对象,或者直到没有更多对象需要孵化,或者直到 msecs 成员不为零时的毫秒数。

通常,此方法与线程或UNIX信号一起使用,当它想要中断孵化时,将 flag 所指stdbool变更为false。

注意

flag 使用获取内存排序读取。

incubatingObjectCount()#
返回类型:

int

返回当前正在孵化对象的数量。

incubatingObjectCountChanged(arg__1)#
参数:

arg__1 – int

当孵化对象的数量发生变化时调用。 incubatingObjectCount 是新的孵化对象数量。

默认实现不执行任何操作。