이 페이지에서

QModelRoleDataSpan Class

QModelRoleDataSpan 클래스는 ` QModelRoleData ` 객체에 대한 스팬을 제공합니다. 더 보기...

헤더: #include <QModelRoleDataSpan>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
다음부터: Qt 6.0부터

공개 함수

QModelRoleDataSpan()
QModelRoleDataSpan(Container &c)
QModelRoleDataSpan(QModelRoleData &modelRoleData)
QModelRoleDataSpan(QModelRoleData *modelRoleData, qsizetype len)
QModelRoleData *begin() const
QModelRoleData *data() const
QVariant *dataForRole(int role) const
QModelRoleData *end() const
qsizetype length() const
qsizetype size() const
QModelRoleData &operator[](qsizetype index) const

상세 설명

QModelRoleDataSpan은 Q QModelRoleData 객체 배열을 추상화한 것으로 사용됩니다.

뷰와 마찬가지로, QModelRoleDataSpan은 배열의 내용을 검사해야 하는 함수에 전달할 수 있는 작은 객체(포인터 및 크기)를 제공합니다. QModelRoleDataSpan은 모든 배열과 유사한 시퀀스(일반 배열, QVector, std::vector, QVarLengthArray 등)로부터 생성될 수 있습니다. 또한, 이 객체는 시퀀스를 소유하지 않으므로, 해당 시퀀스를 참조하는 모든 QModelRoleDataSpan 객체보다 더 오래 유지되어야 합니다.

뷰와 달리, QModelRoleDataSpan은 스팬이므로 기본이 되는 요소를 수정할 수 있습니다.

QModelRoleDataSpan의 주요 용도는 모델이 한 번의 호출로 서로 다른 역할에 해당하는 데이터를 반환할 수 있도록 하는 것입니다.

모델에서 하나의 요소를 그려내기 위해, 뷰는 (델리게이트를 통해) 일반적으로 필요한 횟수만큼 ` data() `를 호출하여 동일한 인덱스에 대한 여러 역할을 요청합니다.

QVariant text = model->data(index, Qt::DisplayRole);
QVariant decoration = model->data(index, Qt::DecorationRole);
QVariant checkState = model->data(index, Qt::CheckStateRole);
// etc.

QModelRoleDataSpan을 사용하면 뷰가 단 한 번의 함수 호출만으로 동일한 데이터를 요청할 수 있습니다.

이는 뷰가 가져와야 할 역할로 각각 초기화된 QModelRoleData 객체의 적절한 배열을 준비함으로써 달성됩니다. 그런 다음 이 배열을 QModelRoleDataSpan 객체로 묶어 모델의 multiData() 함수에 전달합니다.

std::array<QModelRoleData, 3> roleData = { {
    QModelRoleData(Qt::DisplayRole),
    QModelRoleData(Qt::DecorationRole),
    QModelRoleData(Qt::CheckStateRole)
} };

// Usually, this is not necessary: A QModelRoleDataSpan
// will be built automatically for you when passing an array-like
// container to multiData().
QModelRoleDataSpan span(roleData);

model->multiData(index, span);

// Use roleData[0].data(), roleData[1].data(), etc.

뷰에서는 QModelRoleData 객체 배열(그리고 경우에 따라 해당 스팬)을 저장해 두었다가 이후 모델 호출 시 재사용하는 것이 권장됩니다. 이를 통해 QVariant 객체를 생성하고 반환하는 데 관련된 메모리 할당량을 줄일 수 있습니다.

마지막으로, QModelRoleDataSpan 객체가 주어지면, 모델의 역할은 스팬 내 각 역할에 해당하는 데이터를 채우는 것입니다. 이를 수행하는 방법은 구체적인 모델 클래스에 따라 다릅니다. 다음은 스팬을 반복하며 각 요소에 대해 setData() 를 사용하는 가능한 구현 예시입니다:

void MyModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const
{
    for (QModelRoleData &roleData : roleDataSpan) {
        int role = roleData.role();

        // ... obtain the data for index and role ...

        roleData.setData(result);
    }
}

‘모델/뷰 프로그래밍’ 및 ` QAbstractItemModel::multiData()`도 참조하십시오 .

멤버 함수 문서

[constexpr noexcept] QModelRoleDataSpan::QModelRoleDataSpan()

빈 QModelRoleDataSpan을 생성합니다. 이 객체의 ` data()` 메서드에는 ` nullptr`가 설정되고, 길이는 0으로 설정됩니다.

[constexpr noexcept(...)] template <typename Container> requires if_compatible_container<Container> QModelRoleDataSpan::QModelRoleDataSpan(Container &c)

c 컨테이너를 아우르는 QModelRoleDataSpan 객체를 생성합니다. 이 컨테이너는 QModelRoleData 객체들로 구성된 임의의 연속적인 컨테이너일 수 있습니다. 예를 들어, QVector<QModelRoleData>, std::array<QModelRoleData, 10> 등이 될 수 있습니다.

참고: 이 객체가 소멸되지 않는 한컨테이너는 유지되어야 합니다.

참고: ` noexcept(std::data(c)) && noexcept(std::size(c)) `가 ` true`일 때,이 함수는 `noexcept`입니다.

[constexpr noexcept] QModelRoleDataSpan::QModelRoleDataSpan(QModelRoleData &modelRoleData)

modelRoleData 를 아우르는 QModelRoleDataSpan을 생성하며, 이는 1개의 요소를 가진 배열로 간주됩니다.

[constexpr] QModelRoleDataSpan::QModelRoleDataSpan(QModelRoleData *modelRoleData, qsizetype len)

modelRoleData 에서 시작하여 길이 len 인 배열을 아우르는 QModelRoleDataSpan 객체를 생성합니다.

참고: 이 객체가 소멸되기 전까지는해당 배열을 유지해야 합니다.

[constexpr noexcept] QModelRoleData *QModelRoleDataSpan::begin() const

이 객체가 나타내는 범위의 시작 부분으로 향하는 포인터를 반환합니다.

[constexpr noexcept] QModelRoleData *QModelRoleDataSpan::data() const

이 객체가 나타내는 범위의 시작 부분에 대한 포인터를 반환합니다.

[constexpr] QVariant *QModelRoleDataSpan::dataForRole(int role) const

역할이 role 인 스팬 내의 첫 번째 QModelRoleData 와 관련된 데이터를 반환합니다. 해당 QModelRoleData 객체가 존재하지 않는 경우, 동작은 정의되지 않습니다.

참고: 모델 측에서는 이 함수를 호출하지마십시오 . 모델은 주어진 QModelRoleDataSpan 에 어떤 역할이 포함되어 있는지 미리 알 수 없기 때문입니다. 이 함수는 대신 스팬 내의 역할을 제어할 수 있는 뷰 및 델리게이트에 적합합니다.

참조: QModelRoleData::data()도 참조하십시오 .

[constexpr noexcept] QModelRoleData *QModelRoleDataSpan::end() const

이 객체가 나타내는 범위의 끝에서 한 개 뒤의 허수 요소에 대한 포인터를 반환합니다.

[constexpr noexcept] qsizetype QModelRoleDataSpan::length() const

이 객체가 나타내는 스팬의 길이를 반환합니다.

[constexpr noexcept] qsizetype QModelRoleDataSpan::size() const

이 객체가 나타내는 스팬의 길이를 반환합니다.

[constexpr] QModelRoleData &QModelRoleDataSpan::operator[](qsizetype index) const

스팬 내의 index 위치에 있는 QModelRoleData 에 대한 수정 가능한 참조를 반환합니다.

참고: index 는 이 span에 대해 유효한 인덱스여야 합니다(0 <= index < size()).

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