Spec-Zone.ru › Qt 5.9

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

Инкубирует объекты, пока значение указателя flag истинно, или пока не останется объектов для инкубации, или до 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/qt-5.9/qqmlincubationcontroller.html

Spec-Zone.ru

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