Spec-Zone.ru › Qt 5.14

Класс 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, равно true, или пока не останется больше объектов для инкубации, или до msecs, если msecs не равно нулю.

Как правило, этот метод используется совместно с потоком или сигналом UNIX, который устанавливает значение bool, на который указывает 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.14/qqmlincubationcontroller.html

Spec-Zone.ru

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