Класс 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:
virtual void timerEvent(QTimerEvent *) {
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)
Инкубирует объекты, пока переменная flag имеет значение true, или до тех пор, пока не останется объектов для инкубации, или до msecs миллисекунд, если msecs не равно нулю.
Обычно этот метод используется совместно с потоком или сигналом UNIX, который устанавливает переменную flag в false, когда требуется прервать инкубацию.
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/archives/qt-5.6/qqmlincubationcontroller.html