Класс QQmlIncubationController
QQmlIncubationController управляет процессом инкубации объектов QQmlIncubators. Подробнее...
| Заголовок: | #include <QQmlIncubationController> |
| qmake: | QT += qml |
Открытые функции
| QQmlIncubationController() | |
| QQmlEngine * | engine() const |
| void | incubateFor(int msecs) |
| void | incubateWhile(volatile bool *flag, int msecs = 0) |
| int | incubatingObjectCount() const |
Защищенные функции
| virtual void | incubatingObjectCountChanged(int incubatingObjectCount) |
Подробное описание
QQmlIncubationController управляет процессом инкубации объектов QQmlIncubators.
Для асинхронной работы и предотвращения пропусков или зависаний в приложении, процесс создания объектов QQmlIncubators должен выполняться только во время простоя приложения. QQmlIncubationController позволяет приложению точно контролировать, когда, как часто и как долго этот процесс происходит.
Экземпляр класса QQmlIncubationController должен быть создан и установлен на QQmlEngine с помощью метода QQmlEngine::setIncubationController(). Затем обработка контролируется вызовами методов QQmlIncubationController::incubateFor() или QQmlIncubationController::incubateWhile() в соответствии с потребностями приложения.
Например, это пример контроллера инкубации, который будет инкубировать объекты максимум 5 миллисекунд из каждых 16 миллисекунд.
class PeriodicIncubationController : public QObject,
public QQmlIncubationController
{
public:
PeriodicIncubationController() {
startTimer(16);
}
protected:
void timerEvent(QTimerEvent *) override {
incubateFor(5);
}
}; Хотя предыдущий пример сработает, он не оптимален. Контроллеры инкубации в реальных приложениях должны стараться максимально использовать время простоя — а не фиксированное значение, например, 5 миллисекунд — без нарушения работы приложения.
Документация по функциям-членам
QQmlIncubationController::QQmlIncubationController()
Создает новый контроллер инкубации.
QQmlEngine *QQmlIncubationController::engine() const
Возвращает QQmlEngine, на котором установлен контроллер инкубации, или 0, если он не установлен ни на одном движке.
void QQmlIncubationController::incubateFor(int msecs)
Инкубирует объекты в течение msecs или до тех пор, пока не закончатся объекты для инкубации.
void QQmlIncubationController::incubateWhile(volatile bool *flag, int msecs = 0)
Инкубирует объекты, пока значение bool, на которое указывает flag, истинно, или до тех пор, пока не закончатся объекты для инкубации, или до msecs, если msecs не равно нулю.
Обычно этот метод используется в сочетании с потоком или сигналом UNIX, которые устанавливают значение bool, на которое указывает flag, в ложь, когда необходимо прервать инкубацию.
int QQmlIncubationController::incubatingObjectCount() const
Возвращает количество объектов, которые в данный момент инкубируются.
[virtual protected] void QQmlIncubationController::incubatingObjectCountChanged(int incubatingObjectCount)
Вызывается, когда меняется количество инкубируемых объектов. incubatingObjectCount — новое количество инкубируемых объектов.
Реализация по умолчанию ничего не делает.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qqmlincubationcontroller.html