Класс 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) |
Подробное описание
Для асинхронной работы и предотвращения рывков или зависаний в приложении, процесс создания объектов 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.13/qqmlincubationcontroller.html