QRangeModel::RowOptions Struct
template <typename T> struct QRangeModel::RowOptionsRowOptions 템플릿은 QRangeModel 가 행으로 사용되는 유형을 어떻게 표현할지 제어할 수 있는 사용자 정의 지점을 제공합니다. 더 보기...
이 구조체는 Qt 6.10에서 도입되었습니다.
정적 공용 멤버
(since 6.12) bool | canDropMimeData(const QMimeData *data) |
(since 6.12) bool | canDropMimeData(const QMimeData *data, int action, int row, int column, const QModelIndex &parent) |
(since 6.12) auto | dropMimeData(const QMimeData *data, auto inserter) |
(since 6.12) auto | dropMimeData(const QMimeData *data, int action, int row, int column, const QModelIndex &parent, auto inserter) |
(since 6.12) Qt::ItemFlags | flags(const T &row) |
(since 6.12) QVariant | headerData(int section, int role) |
(since 6.12) QMimeData * | mimeData(const QModelIndex &range) |
(since 6.12) QMimeData * | mimeData(const auto &range) |
(since 6.12) QStringList | mimeTypes() |
| const QRangeModel::RowCategory | rowCategory |
상세 설명
RowOptions<T>는 T 가 행의 유형을 지정하는 구조체 템플릿입니다. 범위에서 사용되는 유형에 대해 이 템플릿을 특화하고, 관련 멤버를 추가하십시오.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
...
};ItemAccess도 참조하십시오 .
멤버 함수 설명서
[static, since 6.12] bool RowOptions::canDropMimeData(const QMimeData *data)
[static, since 6.12] bool RowOptions::canDropMimeData(const QMimeData *data, int action, int row, int column, const QModelIndex &parent)
data 를 모델에 드롭할 수 있는지 여부를 반환하도록 다음 클래스 멤버 중 하나를 구현하십시오. 단순화된 버전을 구현하는 경우, QRangeModel 는 action 가 supported drop actions 중 하나인지 유효성 검사를 수행합니다. 전체 버전의 경우, 구현은 row, column 및 parent 에 지정된 드롭 위치에 따라 서로 다른 결과를 반환할 수 있습니다.
이 멤버는 선택 사항이며, 드래그 앤 드롭 사용자 정의에 필수적인 것은 아닙니다. 기본 동작은 data 가 지원되는 MIME 유형 중 하나를 포함하는지 여부를 반환합니다.
이 함수들은 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::canDropMimeData()도 참조하십시오 .
[static, since 6.12] template <typename inserter:auto> auto RowOptions::dropMimeData(const QMimeData *data, auto inserter)
[static, since 6.12] template <typename inserter:auto> auto RowOptions::dropMimeData(const QMimeData *data, int action, int row, int column, const QModelIndex &parent, auto inserter)
data 의 관련 항목을 T 유형의 행 시퀀스로 디코딩하기 위해 이러한 클래스 멤버 중 하나를 구현하고, 제공된 inserter 에 각 항목을 할당하여 모델에 삽입합니다. 작업이 성공했는지 여부를 반환합니다.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
static bool dropMimeData(const QMimeData *mimeData, auto inserter)
{
const QByteArray data = mimeData->data(mimeTypes().first());
if (data.isEmpty())
return false;
QXmlStreamReader stream(data);
while (!stream.atEnd()) {
stream.readNext();
if (stream.isStartElement() && stream.name() == u"li"_s)
inserter = ColorEntry(stream.readElementText());
}
return true;
}
};inserter 는 std::back_insert_iterator와 유사하게 동작하며, 예를 들어 std::copy 와 함께 사용할 수 있습니다. 위의 코드 예제에서는 오류 처리가 생략되어 있는데, 오류 발생 시 버릴 수 있도록 디코딩된 항목을 별도의 리스트에 저장해야 할 수도 있습니다. 다음 코드는 디코딩된 행을 모델로 효율적으로 이동시킵니다:
static bool dropMimeData(const QMimeData *mimeData, auto inserter)
{
QList<ColorEntry> decodedEntries;
// read stream and populate decodedEntries
if (stream.hasError())
return false;
std::copy(std::move_iterator(decodedRows.begin()), std::move_iterator(decodedRows.end()),
inserter);
return true;
}선택적으로, 디코딩된 행을 삽입될 행 범위 내에서 해당 행이 차지해야 할 상대 행 번호와 짝을 지을 수 있습니다.
int row = 0;
for (const auto &decodedRow : decodedRows) {
inserter = {decodedRow, row};
row += 2;
}이 구현 방식은 각 디코딩된 행 사이에 빈 행 하나를 삽입합니다.
DropOperation 값 중 하나를 반환하여, QRangeModel 에 드롭된 행이 모델에 어떻게 적용되어야 하는지에 대한 힌트를 제공하세요. 또는, 단순히 true ( DropOperation::Automatic 와 동일) 또는 false ( DropOperation::DontDrop 와 동일)를 반환할 수도 있습니다.
이 함수들은 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::dropMimeData()도 참조하십시오 .
[static, since 6.12] Qt::ItemFlags RowOptions::flags(const T &row)
row 에 포함된 모든 항목에 대한 flags 를 반환하도록 이 클래스 멤버를 구현하십시오.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
static Qt::ItemFlags flags(const ColorEntry &entry)
{
return entry.flags();
}
};이는 ` ItemAccess::flags`의 사용자 정의에 의해 재정의됩니다.
이 멤버가 제공되지 않으면, ` QRangeModel `는 생성된 범위를 기반으로 플래그를 계산합니다.
이 함수는 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::flags()도 참조하십시오 .
[static, since 6.12] QVariant RowOptions::headerData(int section, int role)
이 클래스 멤버를 구현하여, 가로 헤더 내의 ` section `에 대한 ` role `에 대해 ` QRangeModel `가 반환해야 하는 헤더 데이터를 반환하도록 하십시오.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
static QVariant headerData(int section, int role)
{
switch (section) {
// ...
}
return {};
}
};이 멤버가 제공되지 않으면, QRangeModel 는 headerData() 구현에서 유형별 기본값을 반환합니다.
이 함수는 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::headerData()도 참조하십시오 .
[static, since 6.12] QMimeData *RowOptions::mimeData(const QModelIndex &range)
[static, since 6.12] template <typename range:auto> QMimeData *RowOptions::mimeData(const auto &range)
제공된 ` range`에 포함된 행에 대한 ` mime data `를 반환하도록 다음 클래스 멤버 중 하나를 구현하십시오.
제네릭 버전이 제공된 경우, ` range `에 대한 이터레이터는 양방향이며, ` T ` 유형의 행과 해당 ` QModelIndex`로 구성된 튜플을 가리킵니다.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
template <typename Items>
static QMimeData *mimeData(const Items &items)
{
if (items.isEmpty())
return nullptr;
QByteArray data;
QXmlStreamWriter stream(&data);
stream.writeStartElement("ul");
for (const auto &[item, index] : items)
stream.writeTextElement("li", item.colorName());
stream.writeEndElement();
QMimeData *mimeData = new QMimeData;
mimeData->setData(mimeTypes().first(), data);
return mimeData;
}
};for (const auto &[row, index] : range) {
// ...
}완전히 선택된 행은 행 번호와 부모를 포함하는 index 와 -1을 포함하는 열로 구성된 쌍과 함께 범위 내에 한 번만 포함됩니다. 부분적으로 선택된 행은 선택된 각 열마다 한 번씩, 범위 내에 여러 번 포함됩니다.
range 의 항목은 논리적 순서, 즉 맨 위 행부터 마지막 행까지, 그리고 맨 왼쪽 열부터 마지막 열까지 정렬됩니다.
이 함수들은 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::mimeData()도 참조하십시오 .
[static, since 6.12] QStringList RowOptions::mimeTypes()
이 클래스 멤버를 구현하여, ` T ` 유형의 행을 포함하는 모델이 드래그 앤 드롭 작업 중에 모델 데이터를 표현하는 데 사용할 수 있는 ` mime types ` 목록을 반환하십시오.
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
static QStringList mimeTypes()
{
return {
u"text/html"_s
};
}
};이 멤버가 제공되지 않으면, QRangeModel 는 QAbstractItemModel 에서 지원하는 기본 MIME 유형인 "application/x-qabstractitemmodeldatalist"를 반환합니다. 반환된 목록에 해당 MIME 유형이 포함되어 있지 않으면, 해당 MIME 유형은 지원되지 않습니다.
이 함수는 Qt 6.12에서 도입되었습니다.
QAbstractItemModel::mimeTypes()도 참조하십시오 .
멤버 변수 문서
const QRangeModel::RowCategory RowOptions::rowCategory
이 정적 컴파일 시간 상수를 ` RowCategory ` 열거형에 포함된 값 중 하나로 설정하여, ` QRangeModel `가 범위의 요소를 어떻게 해석해야 하는지 정의합니다. 이 상수를 지정하지 않으면 ` RowCategory::Default`와 동일하게 처리됩니다.
class ColorEntry
{
Q_GADGET
Q_PROPERTY(QString display READ colorName)
Q_PROPERTY(QColor decoration READ decoration)
Q_PROPERTY(QString toolTip READ toolTip)
public:
...
};
template <>
struct QRangeModel::RowOptions<ColorEntry>
{
static constexpr auto rowCategory = QRangeModel::RowCategory::MultiRoleItem;
};rowCategory 가 MultiRoleItem 로 설정된 경우, 다른 멤버들은 아무런 효과도 발휘하지 않습니다.
ItemAccess도 참조하십시오 .
© 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.