QtTaskTree::UntilIterator Class

class QtTaskTree::UntilIterator

The conditional iterator to be used inside For element. More...

Header: #include <qtasktree.h>
Inherits: QtTaskTree::Iterator

Note: All functions in this class are reentrant.

Public Functions

UntilIterator(const QtTaskTree::Iterator::Condition &condition)

Detailed Description

See also Iterator, ForeverIterator, RepeatIterator, and ListIterator.

Member Function Documentation

UntilIterator::UntilIterator(const QtTaskTree::Iterator::Condition &condition)

Constructs the conditional iterator for the For (UntilIterator(condition)) >> Do {} construct. The iterator will repeat until passed condition returns true.

Example usage:

static const int maxNumber = 10;
const int luckyNumber = QRandomGenerator().global()->bounded(maxNumber);

qDebug() << "Today's lucky number is:" << luckyNumber;
qDebug() << "Let's start the drawing...";

const auto onConditionCheck = [luckyNumber](int iteration) {
    if (iteration == 0)
        return true;
    const int drawnNumber = QRandomGenerator().global()->bounded(maxNumber);
    qDebug() << "You have drawn:" << drawnNumber;
    bool won = drawnNumber == luckyNumber;
    if (won)
        qDebug() << "You have won! Congratulations!";
    return !won;
};

const Group recipe = For (UntilIterator(onConditionCheck)) >> Do {
    timeoutTask(1s, DoneResult::Success)
};

The possible output when the recipe is started by the QTaskTree:

Today's lucky number is: 7
Let's start the drawing...
You have drawn: 2
You have drawn: 5
You have drawn: 0
You have drawn: 2
You have drawn: 4
You have drawn: 9
You have drawn: 9
You have drawn: 7
You have won! Congratulations!

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.