- class QQmlIncubationController#
QQmlIncubationController
实例驱动 QQmlIncubators 的进度。 更多…概要#
方法#
def
__init__()
def
engine()
def
incubateFor()
def
incubateWhile()
虚函数#
注意
本文档可能包含从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
或 0(如果没有设置在任何引擎上)。- incubateFor(msecs)#
- 参数:
msecs – int
孵化对象
msecs
毫秒,或者直到没有更多对象需要孵化。- incubateWhile(flag[, msecs=0])#
- 参数:
flag –
atomic
msecs – int
当
flag
所指的原子布尔值为真时孵化对象,或者直到没有更多对象需要孵化,或者直到msecs
成员不为零时的毫秒数。通常,此方法与线程或UNIX信号一起使用,当它想要中断孵化时,将
flag
所指stdbool变更为false。注意
flag
使用获取内存排序读取。- incubatingObjectCount()#
- 返回类型:
int
返回当前正在孵化对象的数量。
- incubatingObjectCountChanged(arg__1)#
- 参数:
arg__1 – int
当孵化对象的数量发生变化时调用。
incubatingObjectCount
是新的孵化对象数量。默认实现不执行任何操作。