Spec-Zone.ru › Qt 5.11

Класс 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, в 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.11/qqmlincubationcontroller.html

Spec-Zone.ru

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