이 페이지에서

QRangeModelAdapter Class

QRangeModelAdapter는 모든 C++ 레인지에 대해 ` QAbstractItemModel`을 준수하는 액세스 방식을 제공합니다. 더 보기...

헤더: #include <QRangeModelAdapter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
다음부터: Qt 6.11부터
상태: 기술 미리보기

이 클래스는 기술 미리보기 단계에 있으며 변경될 수 있습니다.

QRangeModelAdapter 비교

범주비교 가능한 유형
동등성QRangeModelAdapter
동등성범위.

공개 유형

(technology preview) struct ColumnIterator
(technology preview) struct ConstColumnIterator
(technology preview) struct ConstRowIterator
(technology preview) struct ConstRowReference
(technology preview) struct DataReference
(technology preview) struct RowIterator
(technology preview) struct RowReference
(technology preview) struct RowReferenceBase

공개 함수

QRangeModelAdapter(Range &&range)
QRangeModelAdapter(Range &&range, Protocol &&protocol)
void assign(NewRange &&newRange)
void assign(std::initializer_list<Row> newRange)
void assign(InputIterator first, Sentinel last)
auto at(QSpan<const int> path)
auto at(int listRow)
auto at(int tableRow)
auto at(int treeRow)
decltype(auto) at(QSpan<const int> path) const
auto at(int listRow) const
decltype(auto) at(int tableRow) const
auto at(QSpan<const int> path, int column)
auto at(int tableRow, int column)
auto at(QSpan<const int> path, int column) const
auto at(int tableRow, int column) const
(since 6.12) auto at(const QModelIndex &index)
(since 6.12) auto at(const QModelIndex &index) const
int columnCount() const
QVariant data(int listRow) const
QVariant data(QSpan<const int> path, int column) const
QVariant data(int listRow, int role) const
QVariant data(int tableRow, int column) const
QVariant data(QSpan<const int> path, int column, int role) const
QVariant data(int tableRow, int column, int role) const
(since 6.12) QVariant data(const QModelIndex &index) const
(since 6.12) QVariant data(const QModelIndex &index, int role) const
bool hasChildren(QSpan<const int> row) const
(since 6.12) bool hasChildren(const QModelIndex &index) const
bool hasChildren(int row) const
QModelIndex index(int listRow) const
QModelIndex index(QSpan<const int> path, int column) const
QModelIndex index(int tableRow, int column) const
bool insertColumn(int before)
bool insertColumn(int before, D &&data)
bool insertColumns(int before, C &&data)
bool insertRow(QSpan<const int> before)
bool insertRow(int before)
bool insertRow(QSpan<const int> before, D &&data)
bool insertRow(int before, D &&data)
bool insertRow(int before, const QModelIndex &parent)
bool insertRow(int before, const QModelIndex &parent, D &&data)
bool insertRows(QSpan<const int> before, C &&data)
bool insertRows(int before, C &&data)
bool insertRows(int before, const QModelIndex &parent, C &&data)
Model *model() const
bool moveColumn(int from, int to)
bool moveColumns(int from, int count, int to)
bool moveRow(QSpan<const int> source, QSpan<const int> destination)
bool moveRow(int source, int destination)
bool moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild)
bool moveRows(QSpan<const int> source, int count, QSpan<const int> destination)
bool moveRows(int source, int count, int destination)
bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)
const QRangeModelAdapter<Range, Protocol, Model>::range_type &range() const
bool removeColumn(int column)
bool removeColumns(int column, int count)
bool removeRow(QSpan<const int> path)
bool removeRow(int row)
bool removeRow(int row, const QModelIndex &parent)
bool removeRows(QSpan<const int> path, int count)
bool removeRows(int row, int count)
bool removeRows(int row, int count, const QModelIndex &parent)
int rowCount() const
int rowCount(QSpan<const int> row) const
(since 6.12) int rowCount(const QModelIndex &index) const
int rowCount(int row) const
bool setData(int listRow, const QVariant &value, int role = Qt::EditRole)
bool setData(QSpan<const int> path, int column, const QVariant &value, int role = Qt::EditRole)
bool setData(int tableRow, int column, const QVariant &value, int role = Qt::EditRole)
(since 6.12) bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
QRangeModelAdapter<Range, Protocol, Model> &operator=(NewRange &&newRange)
QRangeModelAdapter<Range, Protocol, Model> &operator=(std::initializer_list<Row> newRange)
auto operator[](QSpan<const int> path)
auto operator[](int listRow)
auto operator[](int tableRow)
auto operator[](int treeRow)
decltype(auto) operator[](QSpan<const int> path) const
auto operator[](int listRow) const
decltype(auto) operator[](int tableRow) const

비공개 유형

bool operator!=(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)
bool operator==(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)

상세 설명

QRangeModelAdapter는 C++ 범위와 ` QRangeModel`을 기반으로 유형 안전하고 구조를 인식하는 C++ API를 제공합니다. 어댑터를 사용하여 C++ 범위에 가해진 수정 사항은 ` QRangeModel `의 클라이언트에 변경 사항을 알립니다. 이를 통해 항목 뷰가 업데이트되고, 캐시가 정리되며, 영구 항목 인덱스가 올바르게 무효화되고 조정되도록 보장합니다.

생성 및 모델 소유권

QRangeModelAdapter는 C++ 범위로부터 생성되어야 합니다. QRangeModel 와 마찬가지로, 범위는 lvalue 또는 rvalue 참조, 참조 래퍼, 그리고 원시 포인터나 스마트 포인터 형태로 제공될 수 있습니다.

std::vector<int> data = {1, 2, 3, 4, 5};
QRangeModelAdapter adapter(&data);

구성되는 정확한 유형은 생성자 인자를 기반으로 컴파일러가 추론하며, 값 범주 간의 차이에 따라 동작이 달라질 수 있습니다. 따라서 템플릿 매개변수를 명시적으로 지정해서는 안 됩니다. 그러나 C++은 비정적 클래스 데이터 멤버에 대해서는 클래스 템플릿 인자 추론을 허용하지 않습니다. QRangeModelAdapter를 클래스의 데이터 멤버로 만들려면 다음 패턴을 사용하십시오:

class Backend
{
    using Adapter = decltype(QRangeModelAdapter(std::vector<Book>{}));
    Adapter adapter = Adapter(std::vector<Book>{});

이렇게 하면 이름이 지정되지 않은(즉, rvalue 참조) Books 벡터를 대상으로 작동하는 QRangeModelAdapter가 생성됩니다. 어댑터가 Books 목록에 대한 참조 래퍼를 대상으로 작동하도록 하려면 대신 다음을 사용하십시오:

    QList<Book> books = { /* ... */ };
    using Adapter = decltype(QRangeModelAdapter(std::ref(books)));
    Adapter adapter = Adapter(std::ref(books));
};

범위를 사용하여 어댑터를 생성하면, 동일한 범위로부터 QRangeModel 인스턴스가 암시적으로 생성됩니다. model()를 사용하여 이를 가져온 다음, 평소와 같이 Qt Widgets 또는 Qt Quick 항목 뷰에 전달하십시오.

QListView listView;
listView.setModel(adapter.model());

어댑터는 모델을 소유합니다. QRangeModelAdapter는 값형이므로 복사 및 이동이 가능합니다. 모든 복사본은 동일한 QRangeModel 을 공유하며, 어댑터의 마지막 복사본이 소멸될 때 이 모델도 소멸됩니다.

어댑터가 lvalue 또는 rvalue 참조에서 생성된 경우, 어댑터와 모델은 원본 범위 객체의 복사본을 기반으로 작동합니다. 그렇지 않은 경우, 어댑터나 모델을 통해 수행된 수정 사항은 원본 범위 객체에 기록됩니다. 업데이트된 범위에 액세스하려면 range()를 사용하십시오:

QList<Book> books = {
    // ...
};
QRangeModelAdapter adapter(books);
tableView.setModel(adapter.model());

// show UI and where the user can modify the list

QList<Book> modifiedBooks = adapter.range();

전체 범위 데이터를 다른 (호환되는) 범위의 데이터로 대체하려면 ` assign()` 함수나 할당 연산자를 사용하십시오.

// reset to the original
adapter = books;
// or
adapter.assign(books);

항목 데이터에 대한 액세스

QRangeModelAdapter API는 모델이 처리하는 레인지에 대한 유형 안전한 읽기 및 쓰기 액세스를 제공합니다. 이 어댑터 API는 이터레이터를 포함하여 C++ 컨테이너 및 범위에 대한 일반적인 API를 기반으로 합니다. 개별 행 및 항목에 접근하려면 ` at()` 함수, 해당 인덱스 연산자 ` operator[]` 또는 ` data()`를 사용하십시오. 사용 가능한 함수 오버로드의 종류는 어댑터가 생성된 범위에 따라 다릅니다.

QVariant로 항목 데이터 읽기

data() 함수는 항상 지정된 위치와 역할에 저장된 값을 가진 QVariant 를 반환합니다. 목록에서 항목은 행을 지정하는 단일 정수 값을 통해 접근할 수 있습니다:

QVariant listItem = listAdapter.data(row);

범위가 테이블인 경우, 항목은 행과 열로 지정됩니다:

QVariant tableItem = tableAdapter.data(row, column);

범위가 트리인 경우, 항목은 행의 경로와 단일 열 값을 사용하여 찾아집니다:

QVariant treeItem = treeAdapter.data({path, to, branch}, column);

단일 정수를 행으로 사용하면 최상위 트리 항목에 접근할 수 있습니다.

QRangeModelAdapter listOfBooks(QList<Book>{
    // ~~~
});
QString bookTitle = listOfBooks.data(0, Book::TitleRole).toString();
Book multiRoleItem = listOfBooks.data(0).value<Book>();

역할이 지정되지 않은 경우, ` QVariant `는 해당 위치에 있는 항목 전체를 보유하게 됩니다. 항목의 복사본을 가져오려면 ` QVariant::fromValue()` 템플릿 함수를 사용하십시오.

at()을 사용한 읽기 및 쓰기

data() 함수가 QVariant 를 반환한다는 점은 유연성을 제공하지만, 타입 안전성을 저해합니다. 모든 항목이 동일한 타입인 범위의 경우, at() 함수는 일반 C++ 컨테이너와 더 호환성이 높은 타입 안전한 대안을 제공합니다. data()과 마찬가지로, at() 오버로드가 존재하여 리스트의 경우 행 위치, 테이블의 경우 행/열 쌍, 트리의 경우 경로/열 쌍에 있는 항목에 접근할 수 있습니다. 그러나 at()은 항상 지정된 위치의 전체 항목을 반환하며, 항목의 개별 열 값을 읽을 수는 없습니다.

C++ 컨테이너 API에서 예상할 수 있듯이, ` at()`의 const 오버로드(및 이에 상응하는 인덱서 ` operator[]()`)는 값에 대한 불변(immutable) 액세스를 제공하는 반면, 가변(mutable) 오버로드는 새로운 값을 할당할 수 있는 참조 객체를 반환합니다. const 범위를 처리하는 QRangeModelAdapter는 이러한 측면에서 const QRangeModelAdapter와 동일하게 동작한다는 점에 유의하십시오. 변경 가능한 오버로드들은 오버로드 집합에서 제거되므로, 컴파일러는 항상 const 버전을 선택합니다. 어댑터 자체가 변경 가능하더라도, 범위를 수정하는 함수를 호출하려고 하면 컴파일러 오류가 발생합니다:

const QStringList strings = {"On", "Off"};
QRangeModelAdapter adapter(strings);
adapter.at(0) = "Undecided"; // compile error: return value of 'at' is const
adapter.insertRow(0); // compiler error: requirements not satisfied

반환된 참조 객체는 기본 유형으로 암시적으로 변환되는 래퍼이며, 기본 값에 명시적으로 접근할 수 있는 ` get()` 함수와 const 멤버 함수에 직접 접근할 수 있게 해주는 ` operator->()` 함수를 가지고 있습니다. 그러나 ` QAbstractItemModel ` 알림 프로토콜을 우회하는 의도치 않은 데이터 변경을 방지하기 위해, 이러한 참조 객체는 항목의 직접 수정을 차단합니다.

참고: 참조 객체에액세스하면 항상 모델에 호출을 보내 값의 복사본을 가져옵니다. 이 작업은 비용이 많이 들 수 있으므로, 성능이 중요한 데이터 액세스 시에는 복사본을 저장하십시오.

항목 액세스

범위가 리스트로 표현되는 경우, 행을 인수로 받는 오버로드만 사용할 수 있습니다.

QRangeModelAdapter list(std::vector<int>{1, 2, 3, 4, 5});
listView.setModel(list.model());

int firstValue = list.at(0); // == 1
list.at(0) = -1;
list.at(1) = list.at(4);

const 오버로드는 해당 행의 항목을 반환하는 반면, mutable 오버로드는 리스트의 값 유형으로 암시적으로 변환되고 다시 원형으로 변환되는 래퍼를 반환합니다.

QRangeModelAdapter books(QList<Book>{
    // ~~~
});
Book firstBook = books.at(0);
Book newBook = {};
books.at(0) = newBook; // dataChanged() emitted

래퍼에 값을 할당하여 리스트의 데이터를 수정할 수 있습니다. 모델은 모든 역할에 대해 ` dataChanged()`를 발생시킵니다.

변경 가능한 오버로드를 사용할 때는 오버로드된 화살표 연산자를 사용하여 항목 유형의 const 멤버에 접근할 수도 있습니다.

QString title = books.at(0)->title();

항목의 비const 멤버에는 접근할 수 없습니다. 이러한 수정 작업은 어댑터를 우회하게 되며, 이 경우 어댑터는 변경 사항을 모델에 알릴 수 없게 됩니다. 모델에 저장된 값을 수정하려면 복사본을 생성하고, 복사본의 속성을 수정한 다음, 해당 복사본을 다시 모델에 기록하십시오.

// books.at(0)->setRating(5); - not possible even though 'books' is not const
firstBook = books.at(0);
firstBook.setRating(5);
books.at(0) = firstBook; // dataChanged() emitted

이렇게 하면 모델이 이 항목과 모든 역할에 대해 ` dataChanged()`를 발생시킵니다.

범위가 테이블로 표현된 경우, ` at(row, column)` 오버로드를 사용하여 행과 열을 통해 개별 항목에 접근할 수 있습니다. 트리의 경우, 해당 오버로드는 최상위 항목에 대한 접근을 제공하는 반면, ` at(path, column)` 오버로드는 트리 내에 중첩된 항목에 대한 접근을 제공합니다.

테이블이나 트리에서 개별 항목에 접근하는 것은 목록에서 항목에 접근하는 것과 동일합니다.

QRangeModelAdapter table(std::vector<std::vector<double>>{
    {1.0, 2.0, 3.0, 4.0, 5.0},
    {6.0, 7.0, 8.0, 9.0, 10.0},
});
tableView.setModel(table.model());

double value = table.at(0, 2); // value == 3.0
table.at(0, 2) = value * 2; // table[0, 2] == 6.0

범위에 포함된 모든 열이 동일한 데이터 유형을 사용하지 않는 경우, ` at(row,column) `는 항목을 포함하는 ` QVariant `(참조 래퍼)를 반환합니다.

QRangeModelAdapter table(std::vector<std::tuple<int, QString>>{
    // ~~~
});
int number = table.at(0, 0)->toInt();
QString text = table.at(0, 1)->toString();

테이블 및 트리에서 행에 접근하기

테이블과 트리의 경우, 열 매개변수가 없는 at() 및 인덱스 operator[]()의 오버로드 함수를 사용하면 전체 행에 접근할 수 있습니다. const 오버로드가 반환하는 값은 행 데이터에 접근할 수 있는 참조 유형입니다. 해당 행에 포인터가 포함되어 있는 경우, 이 참조 유형은 행의 뷰가 되어 const 항목에 대한 포인터에 접근할 수 있게 해줍니다.

테이블 행 접근

at(int) 오버로드는 여전히 사용할 수 있지만, 테이블 행 전체를 반환합니다. 이를 통해 행의 모든 값을 한 번에 처리할 수 있습니다.

const auto &constTable = table;
const std::vector<double> &topRow = constTable.at(0);

항목과 마찬가지로, const 오버로드는 행 유형에 대한 직접적인 접근을 제공하는 반면, mutable 오버로드는 행에 대한 참조 역할을 하는 래퍼를 반환합니다. 이 래퍼는 오버로드된 화살표 연산자를 사용하여 const 멤버 함수에 대한 접근을 제공합니다. 값을 수정하려면 수정된 행 유형을 다시 저장해야 합니다.

auto lastRow = table.at(table.rowCount() - 1);
lastRow = { 6.5, 7.5, 8.0, 9.0, 10 }; // emits dataChanged() for entire row

행에 새로운 값을 할당하면, 모델은 행 내의 모든 항목과 모든 역할에 대해 ` dataChanged()` 신호를 발산합니다.

참고: ` std::vector `이나 ` QList`과 같이 런타임 크기를 갖는 행 유형을 사용할때는 새 행의 크기가 올바른지 확인해야 합니다.

트리 행 액세스

트리 내의 행은 트리의 각 레벨마다 하나의 항목씩, 정수 시퀀스로 지정됩니다. 다음 코드 예제에서 Tree는 원시 행 포인터를 포함하는 범위이며, 어댑터는 해당 범위의 rvalue 참조를 사용하여 생성된다는 점에 유의하십시오. 이를 통해 QRangeModel 가 행 데이터에 대한 소유권을 갖게 됩니다.

QRangeModelAdapter tree = QRangeModelAdapter(Tree{
    new TreeRow{"Germany", 357002, Tree{
            new TreeRow("Bavaria", 70550)
        },
    },
    new TreeRow{"France", 632702},
});
treeView.setModel(tree.model());

auto germanyData = tree.at(0);
auto bavariaData = tree.at({0, 0});

단일 행 값을 매개변수로 받는 ` at()`의 오버로드 함수는 최상위 행 또는 최상위 행 내의 항목에 대한 액세스를 제공합니다.

auto germanyName = tree.at(0, 0);
auto bavariaSize = tree.at({0, 0}, 1);

트리 내의 행과 항목에 접근하는 기본 패턴은 테이블 내의 행과 항목에 접근하는 방식과 동일합니다. 그러나 어댑터는 전체 행을 수정할 때 트리 구조가 유지되도록 보장합니다.

// deletes the old row - tree was moved in
tree.at({0, 0}) = new TreeRow{"Berlin", 892};

이 예제에서는 새로운 행 객체가 생성되어, 최상위 항목 중 첫 번째 항목의 첫 번째 자식 항목에 할당됩니다.

이테레이터 API

begin() 및 end()를 사용하여 모델의 행에 대한 이터레이터를 얻거나, ranged-for를 사용하십시오. 범위가 항목 목록인 경우, 이터레이터의 참조를 해제하면 항목 데이터에 접근할 수 있습니다.

for (const auto &book: std::as_const(books)) {
    qDebug() << "The book" << book.title()
            << "저자: " << book.author()
             << "평점: " << book.rating() << "개";
}

at()의 const 및 mutable 오버로드와 마찬가지로, mutable 이터레이터를 참조 해제하면 래퍼로 연결됩니다.

for (auto book : books) {
    qDebug() << "The book" << book->title()
            << "저자: "<< book->author()
             << "평점: " << book->rating() << "개";

    Book copy = book;
    copy.setRating(copy.rating() + 1);
    book = copy;
}

오버로드된 화살표 연산자를 사용하여 항목 유형의 const 멤버에 접근하고, 래퍼에 할당하여 값을 변경합니다.

범위가 테이블이나 트리인 경우, 모델을 반복 처리하면 행에 접근할 수 있습니다.

QRangeModelAdapter table(std::vector<std::pair<int, QString>>{
    // ~~~
});

for (const auto &row: std::as_const(table)) {
    qDebug() << "Number is" << row->first << "and string is" << row->second;
}

const 이터레이터와 mutable 이터레이터 모두 행에 대한 래퍼 타입을 가리킵니다. 이를 통해 기본 행 타입이 범위(range)가 아닌 경우(예: 튜플이나 가젯일 수 있음)에도 행 내의 각 항목을 일관되게 반복 처리할 수 있습니다.

for (const auto &row: std::as_const(table)) {
    for (const auto &item: row) {
        qDebug() << item; // item is a QVariant
    }
}

변경 가능한 테이블을 반복 처리할 때 전체 행을 덮어쓸 수 있습니다.

for (auto row : table) {
    qDebug() << "Number is" << row->first << "and string is" << row->second;
    row = std::make_pair(42, u"forty-two"_s);
}

이 모델은 모든 행의 모든 항목에 대해, 그리고 모든 역할에 대해 dataChanged() 신호를 발생시킵니다.

for (auto row : table) {
    for (auto item : row) {
        item = 42;
    }
}

변경 가능한 행을 순회하면 개별 항목을 수정할 수 있습니다.

트리를 반복 처리할 때, 행 래퍼에는 hasChildren()와 children()이라는 두 가지 추가 멤버 함수가 있어, 이터레이터를 사용하여 전체 트리를 탐색할 수 있습니다.

for (auto row : tree) {
    if (row.hasChildren()) {
        for (auto child : row.children()) {
            // ~~~
        }
    }
}

children()이 반환하는 객체는 호출된 객체와 동일한 모델을 다루는 QRangeModelAdapter이지만, 모든 연산에서는 소스 행 인덱스를 부모 인덱스로 사용합니다.

QRangeModel도 참조하십시오 .

멤버 유형 문서

[alias] QRangeModelAdapter::range_type

멤버 함수 문서

[implicit] QRangeModelAdapter::QRangeModelAdapter(Range &&range)

[implicit] QRangeModelAdapter::QRangeModelAdapter(Range &&range, Protocol &&protocol)

range 에서 작동하는 QRangeModelAdapter 를 생성합니다. 트리 범위의 경우, 트리 탐색에 선택적 매개변수 protocol 가 사용됩니다.

Range 에 대한 요구 사항 및 range 의 값 범주가 어댑터, 모델, 범위 간의 상호작용을 어떻게 변화시키는지에 대한 자세한 내용은 QRangeModel 생성자 문서를 참조하십시오.

QRangeModel도 참조하십시오 .

template < typename InputIterator, typename Sentinel, typename I > requires if_writable<I> void QRangeModelAdapter::assign(InputIterator first, Sentinel last)

모델의 내용을 [first, last) 범위의 행들로 대체합니다.

range(), at 및 model()도 참조하십시오 .

template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::at(QSpan<const int> path)

template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::operator[](QSpan<const int> path)

path 로 지정된 트리 행에 대한 참조를 포함하는 mutable wrapper 를 반환합니다.

트리 행을 수정하려면 해당 행에 새로운 값을 할당하십시오. 새로운 트리 행을 할당하면 새 트리 행의 부모가 기존 트리 행의 부모로 설정됩니다. 단, 기존 트리 행과 새 트리 행 모두 자식 행이 없어야 합니다. 트리 행에 액세스하려면 operator*() 을 사용하여 래퍼의 참조를 해제하거나, operator->() 을 사용하여 트리 행의 멤버에 액세스하십시오.

참고: 범위를수정하면 래퍼가 무효화됩니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_list<I> && if_writable<I> auto QRangeModelAdapter::at(int listRow)

template <typename I> requires if_list<I> && if_writable<I> auto QRangeModelAdapter::operator[](int listRow)

Range 에 저장된 값을 가리키는 mutable reference 를 반환합니다.

참고: 범위를수정하면 해당 참조가 무효화됩니다. 참조를 수정하려면 새로운 값을 할당하십시오. Range 에 저장된 값이 포인터가 아닌 경우, 저장된 값의 개별 멤버에 접근할 수 없습니다.

제약 조건

Range 가 변경 가능한 리스트인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_table<I> && if_writable<I> auto QRangeModelAdapter::at(int tableRow)

template <typename I> requires if_table<I> && if_writable<I> auto QRangeModelAdapter::operator[](int tableRow)

Range 에 저장된 대로, tableRow 에 있는 행에 대한 reference wrapper 를 반환합니다.

제약 조건

Range 가 트리가 아닌 가변 테이블인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::at(int treeRow)

template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::operator[](int treeRow)

Range 에 저장된 대로, treeRow 에 있는 행에 대한 reference wrapper 를 반환합니다.

트리 행을 수정하려면 해당 행에 새로운 값을 할당하십시오. 새로운 트리 행을 할당하면 새 트리 행의 부모가 기존 트리 행의 부모로 설정됩니다. 단, 기존 트리 행과 새 트리 행 모두 자식 행이 없어야 합니다. 트리 행에 액세스하려면 operator*() 을 사용하여 래퍼의 참조를 해제하거나, operator->() 을 사용하여 트리 행 멤버에 액세스하십시오.

참고: 범위를수정하면 래퍼가 무효화됩니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_tree<I> decltype(auto) QRangeModelAdapter::at(QSpan<const int> path) const

template <typename I> requires if_tree<I> decltype(auto) QRangeModelAdapter::operator[](QSpan<const int> path) const

path 로 지정된 행에 대한 상수 참조를 반환하며, 이 행은 Range 에 저장된 대로입니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_list<I> auto QRangeModelAdapter::at(int listRow) const

template <typename I> requires if_list<I> auto QRangeModelAdapter::operator[](int listRow) const

listRow 에 있는 값을 Range 에 저장된 유형으로 반환합니다.

제약 조건

Range 가 리스트인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires unless_list<I> decltype(auto) QRangeModelAdapter::at(int tableRow) const

template <typename I> requires unless_list<I> decltype(auto) QRangeModelAdapter::operator[](int tableRow) const

Range 에 저장된 tableRow 위치의 행에 대한 상수 참조를 반환합니다.

제약 조건

Range 가 테이블이거나 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::at(QSpan<const int> path, int column)

path 및 column 로 지정된 항목에 저장된 값을 가리키는 ` mutable reference `를 반환합니다. 해당 항목이 다중 역할 항목인 경우, 이는 전체 항목을 가리키는 참조가 됩니다. ` Range `의 행들이 서로 다른 열에 서로 다른 유형의 데이터를 저장하고 있는 경우, 반환 유형은 ` QVariant`가 됩니다.

참고: 범위를수정하면 해당 참조가 무효화됩니다. 참조를 수정하려면 새로운 값을 할당하십시오. Range 에 저장된 값이 포인터가 아닌 경우, 저장된 값의 개별 멤버에 접근할 수 없습니다.

제약 조건

Range 가 가변 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires unless_list<I> && if_writable<I> auto QRangeModelAdapter::at(int tableRow, int column)

tableRow 및 column 로 지정된 항목에 저장된 값을 가리키는 mutable reference 를 반환합니다. 해당 항목이 다중 역할 항목인 경우, 이는 전체 항목을 가리키는 참조가 됩니다.

참고: 범위(range)를수정하면 해당 참조가 무효화됩니다. 참조를 수정하려면 참조에 새로운 값을 할당하십시오. Range 에 저장된 값이 포인터가 아닌 한, 저장된 값의 개별 멤버에 접근할 수 없습니다.

제약 조건

Range 가 변경 가능한 테이블인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires if_tree<I> auto QRangeModelAdapter::at(QSpan<const int> path, int column) const

path 및 column 로 지정된 항목에 저장된 값의 복사본을 반환합니다. 해당 항목이 다중 역할 항목인 경우, 전체 항목의 복사본을 반환합니다. Range 의 행들이 서로 다른 열에 서로 다른 유형의 데이터를 저장하고 있는 경우, 반환 유형은 QVariant 가 됩니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

template <typename I> requires unless_list<I> auto QRangeModelAdapter::at(int tableRow, int column) const

tableRow 및 column 로 지정된 항목에 저장된 값의 복사본을 반환합니다. 해당 항목이 다중 역할 항목인 경우, 전체 항목의 복사본이 반환됩니다. Range 의 행들이 서로 다른 열에 서로 다른 유형의 데이터를 저장하고 있는 경우, 반환 유형은 QVariant 가 됩니다.

제약 조건

Range 가 테이블이거나 트리인 경우에만 오버로드 해결에 참여합니다.

[since 6.12] template <typename I> requires if_writable<I> auto QRangeModelAdapter::at(const QModelIndex &index)

index 에 항목으로 저장된 값에 대한 ` mutable reference `를 반환합니다. 해당 항목이 다중 역할 항목인 경우, 이는 전체 항목에 대한 참조가 됩니다. ` Range `의 행들이 서로 다른 열에 서로 다른 유형을 저장하고 있는 경우, 반환 유형은 ` QVariant`가 됩니다.

참고: 범위를수정하면 해당 참조가 무효화됩니다. 참조를 수정하려면 새로운 값을 할당하십시오. Range 에 저장된 값이 포인터가 아닌 한, 저장된 값의 개별 멤버에 접근할 수 없습니다.

제약 조건

Range 가 읽기 전용이 아닌 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.12에서 도입되었습니다.

[since 6.12] auto QRangeModelAdapter::at(const QModelIndex &index) const

index 에 항목으로 저장된 값의 복사본을 반환합니다. 해당 항목이 다중 역할(multi-role) 항목인 경우, 전체 항목의 복사본을 반환합니다. Range 의 행들이 서로 다른 열에 서로 다른 유형의 데이터를 저장하고 있는 경우, 반환 유형은 다중 열 값( QVariant)이 됩니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.12에서 도입되었습니다.

int QRangeModelAdapter::columnCount() const

열의 개수를 반환합니다. ` Range `가 리스트를 나타내는 경우 이 값은 1이 되며, 그렇지 않은 경우 각 행의 요소 개수를 반환합니다.

template <typename I> requires if_list<I> QVariant QRangeModelAdapter::data(int listRow) const

template <typename I> requires if_list<I> QVariant QRangeModelAdapter::data(int listRow, int role) const

listRow 에 있는 항목에 대해, 지정된 role 아래에 저장된 데이터를 포함하는 QVariant 를 반환하거나, 항목이 없는 경우 유효하지 않은 QVariant 를 반환합니다. role 가 지정되지 않은 경우, 전체 항목을 포함하는 QVariant 를 반환합니다.

제약 조건

Range 가 리스트인 경우에만 오버로드 해결에 참여합니다.

setData() 및 at()도 참조하십시오 .

template <typename I> requires if_tree<I> QVariant QRangeModelAdapter::data(QSpan<const int> path, int column) const

template <typename I> requires if_tree<I> QVariant QRangeModelAdapter::data(QSpan<const int> path, int column, int role) const

path 및 column 이 가리키는 항목에 대해, 주어진 role 아래에 저장된 데이터를 포함하는 QVariant 를 반환하거나, 해당 위치나 역할에 저장된 데이터가 없는 경우 유효하지 않은 QVariant 를 반환합니다. role 가 지정되지 않은 경우, 전체 항목을 포함하는 QVariant 를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

setData() 및 at()도 참조하십시오 .

template <typename I> requires unless_list<I> QVariant QRangeModelAdapter::data(int tableRow, int column) const

template <typename I> requires unless_list<I> QVariant QRangeModelAdapter::data(int tableRow, int column, int role) const

tableRow 및 column 가 가리키는 항목에 대해, 지정된 role 에 저장된 데이터를 포함하는 QVariant 를 반환하며, 해당 위치나 역할에 저장된 데이터가 없는 경우에는 유효하지 않은 QVariant 를 반환합니다. role 가 지정되지 않은 경우, 전체 항목을 포함하는 QVariant 를 반환합니다.

제약 조건

Range 가 테이블이나 트리인 경우에만 오버로드 해결에 참여합니다.

setData() 및 at()도 참조하십시오 .

[since 6.12] QVariant QRangeModelAdapter::data(const QModelIndex &index) const

[since 6.12] QVariant QRangeModelAdapter::data(const QModelIndex &index, int role) const

index 에 있는 항목에 대해, 지정된 role 아래에 저장된 데이터를 포함하는 QVariant 를 반환하거나, 해당 위치나 역할에 저장된 데이터가 없는 경우 유효하지 않은 QVariant 를 반환합니다. role 가 지정되지 않은 경우, 전체 항목을 포함하는 QVariant 를 반환합니다.

이 함수들은 Qt 6.12에서 도입되었습니다.

setData() 및 at()도 참조하십시오 .

[constexpr] template <typename I> requires if_tree<I> bool QRangeModelAdapter::hasChildren(QSpan<const int> row) const

[constexpr] template <typename I> requires if_tree<I> bool QRangeModelAdapter::hasChildren(int row) const

row 에 해당하는 행이 있는지 여부를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

[constexpr, since 6.12] template <typename I> requires if_tree<I> bool QRangeModelAdapter::hasChildren(const QModelIndex &index) const

index 에 해당하는 행이 있는지 여부를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.12에서 도입되었습니다.

template <typename I> requires if_list<I> QModelIndex QRangeModelAdapter::index(int listRow) const

listRow 에 대한 QModelIndex 를 반환합니다.

제약 조건

Range 가 1차원 리스트인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

template <typename I> requires if_tree<I> QModelIndex QRangeModelAdapter::index(QSpan<const int> path, int column) const

path 로 지정된 트리 내의 행에 대해, column 에 있는 항목의 QModelIndex 를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

template <typename I> requires unless_list<I> QModelIndex QRangeModelAdapter::index(int tableRow, int column) const

tableRow, column 에 있는 항목의 QModelIndex 을 반환합니다.

제약 조건

Range 가 테이블이거나 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

template <typename I> requires if_canInsertColumns<I> bool QRangeModelAdapter::insertColumn(int before)

before 로 지정된 열 앞에 모든 행에 빈 열 하나를 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 columnCount()의 값과 동일할 경우, 해당 열은 각 행의 끝에 추가됩니다.

제약 조건

Range 에 요소 삽입을 지원하는 행이 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeColumn(), insertColumns(), insertRow()도 참조하십시오 .

template <typename D, typename I> requires if_canInsertColumns<I> && if_compatible_column_data<D> bool QRangeModelAdapter::insertColumn(int before, D &&data)

data 로 구성된 단일 열을 before 로 지정된 열 앞에 모든 행에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 columnCount()의 값과 동일할 경우, 해당 열은 각 행의 끝에 추가됩니다.

data 가 단일 값인 경우, 모든 행의 새 항목은 해당 단일 값을 기반으로 생성됩니다.

data 가 컨테이너인 경우, 해당 컨테이너의 요소들이 순차적으로 사용되어 이후 각 행에 대한 열이 생성됩니다. data 의 요소 수가 행 수보다 적을 경우, 함수는 순환하여 첫 번째 요소부터 다시 시작합니다.

제약 조건

Range 에 요소 삽입을 지원하는 행이 있고, 해당 요소들이 data 의 항목들로 구성될 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeColumn(), insertColumns() 및 insertRow()도 참조하십시오 .

template <typename C, typename I> requires if_canInsertColumns<I> && if_compatible_column_range<C> bool QRangeModelAdapter::insertColumns(int before, C &&data)

` data `의 요소들로 구성된 열을 ` before `로 지정된 열보다 앞쪽 위치에 모든 행에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. ` before `의 값이 ` columnCount()`의 값과 동일할 경우, 해당 열은 각 행의 끝에 추가됩니다.

data 의 요소가 값인 경우, 모든 행의 새 항목은 해당 값을 기반으로 생성됩니다.

data data 의 요소가 값인 경우, 각 행의 새 항목은 해당 값을 사용하여 생성됩니다. 의 요소가 행 수보다 적을 경우, 함수는 순환하여 첫 번째 요소부터 다시 시작합니다.

제약 조건

Range 에 요소 삽입을 지원하는 행이 있고, 해당 요소들이 data 의 항목들로 구성될 수 있는 경우에만 오버로드 해결에 참여합니다.

removeColumns(), insertColumn(), insertRows()도 참조하십시오 .

template <typename I> requires if_canInsertRows<I> && if_tree<I> bool QRangeModelAdapter::insertRow(QSpan<const int> before)

before 로 지정된 경로의 행 앞에 빈 행 하나를 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 같을 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRows(), removeRow(), insertColumn()도 참조하십시오 .

template <typename I> requires if_canInsertRows<I> bool QRangeModelAdapter::insertRow(int before)

before 에 있는 행 앞에 빈 행 하나를 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 같을 경우, 새 행이 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRows(), removeRow(), insertColumn()도 참조하십시오 .

template <typename D, typename I> requires if_canInsertRows<I> && if_compatible_row<D> && if_tree<I> bool QRangeModelAdapter::insertRow(QSpan<const int> before, D &&data)

data 로 구성된 단일 행을 before 에 있는 행 앞에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 동일할 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리이고, data 로부터 행을 구성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하십시오 .

template <typename D, typename I> requires if_canInsertRows<I> && if_compatible_row<D> bool QRangeModelAdapter::insertRow(int before, D &&data)

data 로 구성된 단일 행을 before 에 있는 행 앞에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 동일할 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하고, data 를 통해 행을 생성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하십시오 .

template <typename I> requires if_canInsertRows<I> && if_tree<I> bool QRangeModelAdapter::insertRow(int before, const QModelIndex &parent)

지정된 ` parent`에서 ` before `에 있는 행 바로 앞에 빈 행 하나를 삽입하고, 삽입이 성공했는지 여부를 반환합니다. ` before `의 값이 ` rowCount()`의 값과 동일할 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: insertRows(), removeRow(), insertColumn().

template <typename D, typename I> requires if_canInsertRows<I> && if_compatible_row<D> && if_tree<I> bool QRangeModelAdapter::insertRow(int before, const QModelIndex &parent, D &&data)

지정된 parent 내에서 before 에 있는 행 앞에 data 로 구성된 단일 행을 삽입하고, 삽입이 성공했는지 여부를 반환합니다. 만약 before 의 값이 rowCount()의 값과 동일하다면, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리이고, data 로부터 행을 구성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하십시오 .

template <typename C, typename I> requires if_canInsertRows<I> && if_compatible_row_range<C> && if_tree<I> bool QRangeModelAdapter::insertRows(QSpan<const int> before, C &&data)

data 에 포함된 요소들로 구성된 행을 before 에 있는 행 앞에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 같을 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리이고, data 의 요소들로 행을 구성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRow(), removeRows(), insertColumns()도 참조하십시오 .

template <typename C, typename I> requires if_canInsertRows<I> && if_compatible_row_range<C> bool QRangeModelAdapter::insertRows(int before, C &&data)

data 에 포함된 요소들로 구성된 행을 before 에 있는 행 앞에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 동일할 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하고, data 의 요소들로 행을 구성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRow(), removeRows(), insertColumns()도 참조하십시오 .

template <typename C, typename I> requires if_canInsertRows<I> && if_compatible_row_range<C> && if_tree<I> bool QRangeModelAdapter::insertRows(int before, const QModelIndex &parent, C &&data)

data 에 포함된 요소들로 구성된 행을, 지정된 parent 내의 before 에 있는 행 바로 앞에 삽입하고, 삽입이 성공했는지 여부를 반환합니다. before 의 값이 rowCount()의 값과 동일할 경우, 새 행은 끝에 추가됩니다.

제약 조건

Range 가 요소 삽입을 지원하는 트리이고, data 의 요소들로 행을 구성할 수 있는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRow(), removeRows() 및 insertColumns()도 참조하십시오 .

Model *QRangeModelAdapter::model() const

이 어댑터에 의해 생성된 ` QRangeModel ` 인스턴스를 반환합니다.

range() 및 at()도 참조하십시오 .

template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveColumn(int from, int to)

from 에 있는 열을 to 에 있는 열로 이동하고, 열 이동이 성공적으로 완료되었는지 여부를 반환합니다.

제약 조건

Range 에 요소 이동을 지원하는 행이 있는 경우에만 오버로드 해결에 참여합니다.

참조: insertColumn(), removeColumn(), moveColumns(), moveRow().

template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveColumns(int from, int count, int to)

from 에서 시작하는 ‘ count ’ 열을 to 위치로 이동하고, 열이 성공적으로 이동되었는지 여부를 반환합니다.

제약 조건

Range 에 요소 이동을 지원하는 행이 있는 경우에만 오버로드 해결에 참여합니다.

참조: insertColumns(), removeColumns(), moveColumn(), moveRows().

template <typename I, typename F> requires if_canMoveItems<F> && if_tree<I> bool QRangeModelAdapter::moveRow(QSpan<const int> source, QSpan<const int> destination)

source 에 있는 트리 분기를 destination 위치로 이동시키고, 분기가 성공적으로 이동되었는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRow(), removeRow(), moveColumn()도 참조하십시오 .

template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveRow(int source, int destination)

source 에 있는 행을 destination 위치로 이동시키고, 행이 성공적으로 이동되었는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

insertRow(), removeRow(), moveColumn()도 참조하십시오 .

template <typename I, typename F> requires if_canMoveItems<F> && if_tree<I> bool QRangeModelAdapter::moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild)

sourceRow 에 있는 브랜치를 ‘ sourceParent ’에서 ‘ destinationParent ’의 destinationChild 위치로 이동시키고, 브랜치 이동이 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: insertRow(), removeRow(), moveColumn().

template <typename I, typename F> requires if_canMoveItems<F> && if_tree<I> bool QRangeModelAdapter::moveRows(QSpan<const int> source, int count, QSpan<const int> destination)

source 에서 시작하는 count 트리 분기를 destination 위치로 이동시키고, 행이 성공적으로 이동되었는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: insertRows(), removeRows() 및 moveColumns().

template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveRows(int source, int count, int destination)

source 에서 시작하는 count 개의 행을 destination 의 위치로 이동시키고, 행이 성공적으로 이동되었는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: insertRows(), removeRows(), moveColumns().

template <typename I, typename F> requires if_canMoveItems<F> && if_tree<I> bool QRangeModelAdapter::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)

sourceRow 에서 시작하는 count 의 브랜치를 sourceParent 에서 destinationParent 의 destinationChild 위치로 이동시키고, 브랜치 이동이 성공적으로 완료되었는지 여부를 반환합니다.

제약 조건

Range 가 요소 이동을 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: insertRows(), removeRows(), moveColumns().

const QRangeModelAdapter<Range, Protocol, Model>::range_type &QRangeModelAdapter::range() const

모델 어댑터가 처리하는 범위에 대한 const 참조를 반환합니다.

assign(), at() 및 model()도 참조하십시오 .

template <typename I> requires if_canRemoveColumns<I> bool QRangeModelAdapter::removeColumn(int column)

지정된 ` column `를 각 행에서 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 에 요소 제거를 지원하는 행이 있는 경우에만 오버로드 해결에 참여합니다.

참조: ` insertColumn()`, ` removeColumns()`, ` removeRow()`.

template <typename I> requires if_canRemoveColumns<I> bool QRangeModelAdapter::removeColumns(int column, int count)

각 행에서 지정된 column 로 시작하는 ‘ count ’ 열을 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 에 요소 제거를 지원하는 행이 있는 경우에만 오버로드 해결에 참여합니다.

참조: insertColumns(), removeColumn(), removeRow().

template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRow(QSpan<const int> path)

지정된 path 위치에 있는 행과 해당 행의 모든 자식 노드를 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeRows(), removeColumn() 및 insertRow()도 참조하십시오 .

template <typename I> requires if_canRemoveRows<I> bool QRangeModelAdapter::removeRow(int row)

지정된 row 를 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeRows(), removeColumn() 및 insertRow()도 참조하십시오 .

template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRow(int row, const QModelIndex &parent)

지정된 행( row )을 행 그룹( parent)에서 제거하며, 해당 행의 모든 자식 행도 함께 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeRows(), removeColumn() 및 insertRow()도 참조하십시오 .

template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRows(QSpan<const int> path, int count)

path 로 지정된 행부터 시작하는 count 행들을 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeRow(), removeColumns() 및 insertRows()도 참조하십시오 .

template <typename I> requires if_canRemoveRows<I> bool QRangeModelAdapter::removeRows(int row, int count)

row 부터 시작하는 count 행을 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

removeRow(), removeColumns(), insertRows()도 참조하십시오 .

template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRows(int row, int count, const QModelIndex &parent)

지정된 row 부터 시작하여 parent 에서 count 행을 제거하고, 제거가 성공했는지 여부를 반환합니다.

제약 조건

Range 가 요소 제거를 지원하는 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

참조: removeRow(), removeColumns(), insertRows().

int QRangeModelAdapter::rowCount() const

행의 개수를 반환합니다. ` Range `가 목록이나 테이블을 나타내는 경우, 이는 행의 개수입니다. 트리의 경우, 이는 최상위 행의 개수입니다.

이 함수는 오버로드된 함수입니다.

template <typename I> requires if_tree<I> int QRangeModelAdapter::rowCount(QSpan<const int> row) const

template <typename I> requires if_tree<I> int QRangeModelAdapter::rowCount(int row) const

row 에 포함된 행의 개수를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

[since 6.12] template <typename I> requires if_tree<I> int QRangeModelAdapter::rowCount(const QModelIndex &index) const

index 에 해당하는 행의 개수를 반환합니다.

제약 조건

Range 가 트리인 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.12에서 도입되었습니다.

template <typename I> requires if_list<I> && if_writable<I> bool QRangeModelAdapter::setData(int listRow, const QVariant &value, int role = Qt::EditRole)

listRow 에 있는 항목의 role 데이터를 value 로 설정합니다.

성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

제약 조건

Range 가 변경 가능한 리스트인 경우에만 오버로드 해결에 참여합니다.

data() 및 at()도 참조하십시오 .

template <typename I> requires if_tree<I> && if_writable<I> bool QRangeModelAdapter::setData(QSpan<const int> path, int column, const QVariant &value, int role = Qt::EditRole)

path 및 column 가 가리키는 항목에 대한 role 데이터를 value 로 설정합니다.

성공하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

제약 조건

Range 가 가변 트리인 경우에만 오버로드 해결에 참여합니다.

data() 및 at()도 참조하십시오 .

template <typename I> requires unless_list<I> && if_writable<I> bool QRangeModelAdapter::setData(int tableRow, int column, const QVariant &value, int role = Qt::EditRole)

tableRow 및 column 가 가리키는 항목에 대한 role 데이터를 value 로 설정합니다.

성공하면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

제약 조건

Range 가 변경 가능하고 리스트가 아닌 경우에만 오버로드 해결에 참여합니다.

data() 및 at()도 참조하십시오 .

[since 6.12] template <typename I> requires if_writable<I> bool QRangeModelAdapter::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

index 에 있는 항목의 role 데이터를 value 로 설정합니다.

성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

제약 조건

Range 가 읽기 전용이 아닌 경우에만 오버로드 해결에 참여합니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.12에서 도입되었습니다.

data() 및 at()도 참조하십시오 .

template <typename NewRange = QRangeModelAdapter<Range, Protocol, Model>::range_type> requires if_assignable_range<NewRange> && unless_adapter<NewRange> QRangeModelAdapter<Range, Protocol, Model> &QRangeModelAdapter::operator=(NewRange &&newRange)

template <typename NewRange = QRangeModelAdapter<Range, Protocol, Model>::range_type> requires if_assignable_range<NewRange> void QRangeModelAdapter::assign(NewRange &&newRange)

모델의 내용을 newRange 에 있는 행들로 대체하며, 이 과정에서 이동 세미언틱이 사용될 수 있습니다.

이 함수는 model()가 modelAboutToBeReset() 및 modelReset() 신호를 발생하도록 합니다.

제약 조건

Range 가 변경 가능하고, newRange 가 Range 에 할당될 수 있는 유형이지만 QRangeModelAdapter 에는 할당될 수 없는 유형인 경우에만 오버로드 해결에 참여합니다.

range(), at(), model(), assign()도 참조하십시오 .

template <typename Row> requires if_assignable_range<std::initializer_list<Row>> QRangeModelAdapter<Range, Protocol, Model> &QRangeModelAdapter::operator=(std::initializer_list<Row> newRange)

template <typename Row> requires if_assignable_range<std::initializer_list<Row>> void QRangeModelAdapter::assign(std::initializer_list<Row> newRange)

모델의 내용을 newRange 에 있는 행들로 대체합니다.

제약 조건

Range 가 가변형이고, newRange 가 Range 에 할당될 수 있는 경우에만 오버로드 해결에 참여합니다.

range(), at 및 model()도 참조하십시오 .

관련 비멤버

[noexcept] bool operator!=(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)

lhs 가 rhs 와 같지 않은지 여부를 반환합니다. 두 어댑터가 모두 동일한 model 인스턴스를 가지고 있는 경우, 이 두 어댑터는 서로 동일합니다.

[noexcept] bool operator==(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)

lhs 가 rhs 와 동일한지 여부를 반환합니다. 두 어댑터가 모두 동일한 model 인스턴스를 포함하고 있는 경우, 이 두 어댑터는 동일합니다.

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