QQmlIncubationController Class
Las instancias QQmlIncubationController dirigen el progreso de los QQmlIncubators. Más...
| Cabecera: | #include <QQmlIncubationController> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml)target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Funciones Públicas
| QQmlIncubationController() | |
| QQmlEngine * | engine() const |
| void | incubateFor(int msecs) |
| void | incubateWhile(std::atomic<bool> *flag, int msecs = 0) |
| int | incubatingObjectCount() const |
Funciones protegidas
| virtual void | incubatingObjectCountChanged(int incubatingObjectCount) |
Descripción Detallada
Con el fin de comportarse de forma asíncrona y no introducir tartamudeos o congelaciones en una aplicación, el proceso de creación de objetos a QQmlIncubators debe ser conducido sólo durante el tiempo de inactividad de la aplicación. QQmlIncubationController permite a la aplicación controlar exactamente cuándo, con qué frecuencia y durante cuánto tiempo se produce este proceso.
Una instancia derivada de QQmlIncubationController debe ser creada y establecida en QQmlEngine llamando al método QQmlEngine::setIncubationController(). A continuación, el procesamiento se controla llamando a los métodos QQmlIncubationController::incubateFor() o QQmlIncubationController::incubateWhile() según dicten los requisitos de la aplicación.
Por ejemplo, este es un ejemplo de un controlador de incubación que incubará durante un máximo de 5 milisegundos de cada 16 milisegundos.
class PeriodicIncubationController : public QObject, public QQmlIncubationController { public: PeriodicIncubationController() { startTimer(16); } protected: void timerEvent(QTimerEvent *) override { incubateFor(5); } };
Aunque el ejemplo funciona, está muy simplificado. Los controladores de incubación del mundo real intentan maximizar la cantidad de tiempo de inactividad que consumen sin molestar a la aplicación. Usar una cantidad estática de 5 milisegundos como la de arriba puede tanto dejar tiempo ocioso sobre la mesa en algunas tramas como perturbar la aplicación en otras.
QQuickWindow QQuickView, y todos pre-crean un controlador de incubación que espacia la incubación sobre múltiples cuadros usando un algoritmo más inteligente. Rara vez tendrá que escribir el suyo propio. QQuickWidget
Documentación de las funciones miembro
QQmlIncubationController::QQmlIncubationController()
Cree un nuevo controlador de incubación.
QQmlEngine *QQmlIncubationController::engine() const
Devuelve el QQmlEngine en el que está configurado este controlador de incubación, o 0 si no se ha configurado en ningún motor.
void QQmlIncubationController::incubateFor(int msecs)
Incube los objetos durante msecs, o hasta que no haya más objetos que incubar.
void QQmlIncubationController::incubateWhile(std::atomic<bool> *flag, int msecs = 0)
Incuba objetos mientras el bool atómico apuntado por flag sea verdadero, o hasta que no haya más objetos que incubar, o hasta msecs si msecs no es cero.
Generalmente este método se utiliza junto con un hilo o una señal UNIX que pone el bool apuntado por flag a false cuando quiere que se interrumpa la incubación.
Nota: flag se lee utilizando el orden de adquisición de memoria.
int QQmlIncubationController::incubatingObjectCount() const
Devuelve el número de objetos que se están incubando actualmente.
[virtual protected] void QQmlIncubationController::incubatingObjectCountChanged(int incubatingObjectCount)
Llamada cuando el número de objetos incubando cambia. incubatingObjectCount es el nuevo número de objetos incubando.
La implementación por defecto no hace nada.
© 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.