이 페이지에서

QtTaskTree::Group Class

class QtTaskTree::Group

그룹은 비동기 작업의 중첩된 트리를 실행하고 처리하는 방법을 설명하는 선언적 레시피를 작성하기 위한 기본 요소를 나타냅니다. 더 보기...

헤더: #include <qtasktree.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
이후: Qt 6.11
상속합니다: QtTaskTree::ExecutableItem

참고: 이 클래스의 모든 함수는 재인용됩니다.

공용 함수

Group(const QtTaskTree::GroupItems &children)
Group(std::initializer_list<QtTaskTree::GroupItem> children)

상세 설명

그룹은 다른 그룹 항목의 컨테이너입니다. 그룹은 자식 작업을 하나의 단위로 묶어 그룹의 부모가 하나의 비동기 작업으로 볼 수 있도록 합니다. Group은 GroupItem 유형이므로 Group의 자식이 될 수도 있습니다.

QThreadFunctionTask<ResultType> 또는 QNetworkReplyWrapperTask 와 같은 별칭이 붙은 사용자 지정 작업 이름을 사용하여 하위 작업을 그룹에 삽입합니다:

const Group group {
    QNetworkReplyWrapperTask(...),
    QThreadFunctionTask<int>(...)
};

ExecutionMode 또는 WorkflowPolicy 항목을 삽입하여 그룹의 동작을 사용자 지정할 수 있습니다:

const Group group {
    parallel,
    continueOnError,
    QNetworkReplyWrapperTask(...),
    QNetworkReplyWrapperTask(...)
};

그룹에 중첩된 그룹이 포함될 수 있습니다:

const Group group {
    finishAllAndSuccess,
    QNetworkReplyWrapperTask(...),
    Group {
        QNetworkReplyWrapperTask(...),
        Group {
            parallel,
            QNetworkReplyWrapperTask(...),
            QNetworkReplyWrapperTask(...),
        }
        QThreadFunctionTask<QString>(...)
    }
};

그룹은 사용자 지정 스토리지 구조를 동적으로 인스턴스화할 수 있으며, 이는 작업 간 데이터 교환에 사용될 수 있습니다:

struct MyCustomStruct { QByteArray data; };

Storage<MyCustomStruct> storage;

const auto onFirstSetup = [](QNetworkReplyWrapper &task) { ... };
const auto onFirstDone = [storage](const QNetworkReplyWrapper &task) {
    // storage-> gives a pointer to MyCustomStruct instance,
    // created dynamically by the running task tree.
    storage->data = task.reply()->readAll();
};
const auto onSecondSetup = [storage](QThreadFunction<QImage> &task) {
    // storage-> gives a pointer to MyCustomStruct. Since the group is sequential,
    // the stored MyCustomStruct was already updated inside the onFirstDone handler.
    const QByteArray storedData = storage->data;
};

const Group group {
    // When the group is entered by a running task tree, it creates MyCustomStruct
    // instance dynamically. It is later accessible from all handlers via
    // the *storage or storage-> operators.
    sequential,
    storage,
    QNetworkReplyWrapperTask(onFirstSetup, onFirstDone, CallDoneFlag::OnSuccess),
    QThreadFunctionTask<QImage>(onSecondSetup)
};

멤버 기능 문서

Group::Group(const QtTaskTree::GroupItems &children)

주어진 목록 children 으로 그룹을 생성합니다.

이 생성자는 컴파일 시에는 그룹의 하위 항목을 알 수 없지만 나중에 런타임에 알 수 있을 때 유용합니다:

const QStringList sourceList = ...;

GroupItems groupItems { parallel };

for (const QString &source : sourceList) {
    const QNetworkReplyWrapperTask task(...); // use source for setup handler
    groupItems << task;
}

const Group group(groupItems);

Group::Group(std::initializer_list<QtTaskTree::GroupItem> children)

children 에서 제공한 std::initializer_list 에서 그룹을 생성합니다.

이 생성자는 컴파일 시점에 그룹의 모든 하위 항목을 알고 있을 때 유용합니다:

const Group group {
    finishAllAndSuccess,
    QNetworkReplyWrapperTask(...),
    Group {
        QNetworkReplyWrapperTask(...),
        Group {
            parallel,
            QNetworkReplyWrapperTask(...),
            QNetworkReplyWrapperTask(...),
        }
        QThreadFunctionTask<QString>(...)
    }
};

© 2026 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.