QModelRoleDataSpan Class
QModelRoleDataSpan 클래스는 QModelRoleData 개체에 대한 스팬을 제공합니다. 더 보기...
Header: | #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은 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, QModelRoleDataSpan::if_compatible_container<Container> = true> QModelRoleDataSpan::QModelRoleDataSpan(Container &c)
QModelRoleData 객체의 연속된 컨테이너가 될 수 있는 c 컨테이너에 걸쳐 QModelRoleDataSpan을 구성합니다. 예를 들어 QVector<QModelRoleData>
, std::array<QModelRoleData, 10>
등이 될 수 있습니다.
참고: 이 객체가 소멸되지 않는 한 컨테이너는 계속 유지되어야 합니다.
참고: 이 함수는 noexcept(std::data(c)) && noexcept(std::size(c))
가 true
인 경우를 제외하고는 작동하지 않습니다.
[constexpr noexcept]
QModelRoleDataSpan::QModelRoleDataSpan(QModelRoleData &modelRoleData)
1 요소 배열로 보이는 modelRoleData 에 걸친 QModelRoleDataSpan을 구축합니다.
[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 는 이 스팬에 유효한 인덱스여야 합니다(0 <= index < size()).
© 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.