Spec-Zone.ru › Qt 5.12

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API