이 페이지에서

QRangeModelAdapter Class

QRangeModelAdapter는 모든 C++ 범위에 대한 QAbstractItemModel-규격 액세스를 제공합니다. 더 보기...

Header: #include <QRangeModelAdapter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
이후: Qt 6.11
상태: 예비

이 클래스는 개발 중이며 변경될 수 있습니다.

이 클래스는 동등 비교 가능합니다.

이 클래스는 Range와 동등 비교 가능합니다.

공용 함수

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 row)
auto at(int row)
auto at(int row)
decltype(auto) at(QSpan<const int> path) const
auto at(int row) const
decltype(auto) at(int row) const
auto at(QSpan<const int> path, int column)
auto at(int row, int column)
auto at(QSpan<const int> path, int column) const
auto at(int row, int column) const
int columnCount() const
QVariant data(int row) const
QVariant data(QSpan<const int> path, int column) const
QVariant data(int row, int role) const
QVariant data(int row, int column) const
QVariant data(QSpan<const int> path, int column, int role) const
QVariant data(int row, int column, int role) const
bool hasChildren(QSpan<const int> row) const
bool hasChildren(int row) const
QModelIndex index(int row) const
QModelIndex index(QSpan<const int> path, int column) const
QModelIndex index(int row, 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 insertRows(QSpan<const int> before, C &&data)
bool insertRows(int before, 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 moveRows(QSpan<const int> source, int count, QSpan<const int> destination)
bool moveRows(int source, int count, int destination)
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 removeRows(QSpan<const int> path, int count)
bool removeRows(int row, int count)
int rowCount() const
int rowCount(QSpan<const int> row) const
int rowCount(int row) const
bool setData(int row, 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 row, int column, 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 row)
auto operator[](int row)
auto operator[](int row)
decltype(auto) operator[](QSpan<const int> path) const
auto operator[](int row) const
decltype(auto) operator[](int row) 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>{});

이렇게 하면 이름이 지정되지 않은(즉, r값 참조) Books 벡터에서 작동하는 QRangeModelAdapter가 생성됩니다. 어댑터가 책의 목록에 대한 참조 래퍼에서 작동하도록 하려면 대신 이 패턴을 사용하세요:

    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()(및 해당 첨자 operator[])의 const 오버로드는 값에 대한 불변 액세스를 제공하는 반면, 변경 가능한 오버로드는 새 값을 할당할 수 있는 참조 객체를 반환합니다. 상수 범위에서 작동하는 QRangeModelAdapter는 그 점에서 상수 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 오버로드는 해당 행의 항목을 반환하고, 변경 가능한 오버로드는 목록의 값 유형으로 암시적으로 변환하는 래퍼를 반환합니다.

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();

항목의 구성원이 아닌 멤버에 액세스할 수 없습니다. 이러한 수정은 어댑터를 우회하여 모델에 변경 사항을 알릴 수 없습니다. 모델에 저장된 값을 수정하려면 복사본을 만들고 복사본의 속성을 수정한 다음 해당 복사본을 다시 작성합니다.

// 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(행, 열) 오버로드를 사용하여 행과 열별로 개별 항목에 액세스할 수 있습니다. 트리의 경우 해당 오버로드를 사용하면 최상위 항목에 액세스할 수 있고 at(경로, 열) 오버로드를 사용하면 트리 내에 중첩된 항목에 액세스할 수 있습니다.

표나 트리의 개별 항목에 액세스하는 것은 목록의 항목에 액세스하는 것과 동일합니다.

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) 오버로드는 여전히 사용할 수 있지만 전체 테이블 WOR을 반환합니다. 따라서 행의 모든 값으로 한 번에 작업할 수 있습니다.

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 과 같이 런타임 크기가 있는 행 유형을 사용하는 경우 새 행의 크기가 올바른지 확인하세요.

트리 행 액세스

트리의 행은 트리의 각 레벨마다 하나의 항목씩 정수의 시퀀스로 지정됩니다. 다음 스니펫에서 트리는 원시 행 포인터를 포함하는 범위이며, 어댑터는 해당 범위의 r값 참조로 만들어집니다. 이렇게 하면 행 데이터에 대한 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

시작() 및 끝()을 사용하여 모델의 행에 대한 이터레이터를 가져오거나 ranged-for를 사용합니다. 범위가 항목 목록인 경우 이터레이터를 역참조하면 항목 데이터에 액세스할 수 있습니다.

for(const auto &book: std::as_const(books)) {    qDebug() << "The book" << book.title()
            << "written by"<< book.author()<< "has"<< book.rating()<< "stars"; }

at()의 const 및 가변 오버로드와 마찬가지로 가변 이터레이터는 래퍼를 역참조합니다.

for(auto book : books) {    qDebug() << "The book" << book->title()
            << "written by"<<  book->author()<< "has"<<  book->rating()<< "stars"; 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와 가변 이터레이터는 모두 행의 래퍼 타입을 역참조합니다. 이렇게 하면 기본 행 유형이 범위가 아닌 경우(예: 튜플 또는 가젯일 수 있음)에도 각 열을 일관되게 반복할 수 있습니다.

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

멤버 기능 문서

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

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

range 에서 작동하는 QRangeModelAdapter 을 구축합니다. 트리 범위의 경우 트리 트래버스에 protocol 옵션이 사용됩니다.

Range 에 대한 요구 사항과 range 의 값 범주가 어댑터, 모델 및 범위 간의 상호 작용을 변경하는 방법에 대한 자세한 내용은 QRangeModel 생성자 설명서를 참조하세요.

QRangeModel도 참조하세요 .

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

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

모델의 내용을 newRange 의 행으로 대체하며, 이동 시맨틱을 사용할 수 있습니다.

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

제약 조건

Range 가 가변이고 newRangeRange 에 할당할 수 있는 유형이지만 QRangeModelAdapter 에는 할당할 수 없는 경우에만 과부하 해결에 참여합니다.

range(), at(), model() 및 assign()도 참조하세요 .

template <typename Row, QRangeModelAdapter<Range, Protocol, Model>::if_assignable_range<std::initializer_list<Row>> = true> void QRangeModelAdapter::assign(std::initializer_list<Row> newRange)

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

모델의 내용을 newRange 의 행으로 바꿉니다.

제약 조건

Range 가 가변이고 newRangeRange 에 할당할 수 있는 경우에만 과부하 해결에 참여합니다.

range(), at, model()도 참조하세요 .

template < typename InputIterator, typename Sentinel, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > void QRangeModelAdapter::assign(InputIterator first, Sentinel last)

모델의 내용을 범위의 행으로 바꿉니다 [first, last).

range(), at, model()도 참조하세요 .

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(QSpan<const int> path)

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::operator[](QSpan<const int> path)

path 에 지정된 트리 행에 대한 참조가 포함된 변경 가능한 래퍼를 반환합니다.

트리 행을 수정하려면 새 값을 할당합니다. 새 트리 행을 할당하면 새 트리 행의 부모가 이전 트리 행의 부모로 설정됩니다. 그러나 이전 트리 행이나 새 트리 행 모두 하위 행이 없어야 합니다. 트리 행에 액세스하려면 operator*() 을 사용하여 래퍼를 역참조하거나 operator->() 을 사용하여 트리 행 멤버에 액세스합니다.

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

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(int row)

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::operator[](int row)

Range 에 저장된 유형에 대한 변경 가능한 참조로 래핑된 row 의 값을 반환합니다.

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

제약 조건

Range 가 변경 가능한 목록인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_table<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(int row)

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_table<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::operator[](int row)

Range 에 저장된 row 행에 대한 변경 가능한 참조를 반환합니다.

제약 조건

Range 이 트리가 아닌 변경 가능한 테이블인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(int row)

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::operator[](int row)

row 에 지정된 트리 행에 대한 참조가 포함된 변경 가능한 래퍼를 반환합니다.

트리 행을 수정하려면 새 값을 할당합니다. 새 트리 행을 할당하면 새 트리 행의 부모가 이전 트리 행의 부모로 설정됩니다. 그러나 이전 트리 행이나 새 트리 행 모두 하위 행이 없어야 합니다. 트리 행에 액세스하려면 operator*() 을 사용하여 래퍼를 역참조하거나 operator->() 을 사용하여 트리 행 멤버에 액세스합니다.

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

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> decltype(auto) QRangeModelAdapter::at(QSpan<const int> path) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> decltype(auto) QRangeModelAdapter::operator[](QSpan<const int> path) const

Range 에 저장된 path 에 지정된 행에 대한 상수 참조를 반환합니다.

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true> auto QRangeModelAdapter::at(int row) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true> auto QRangeModelAdapter::operator[](int row) const

Range 에 저장된 유형으로 row 의 값을 반환합니다.

제약 조건

Range 가 목록인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> decltype(auto) QRangeModelAdapter::at(int row) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> decltype(auto) QRangeModelAdapter::operator[](int row) const

Range 에 저장된 row 행에 대한 상수 참조를 반환합니다.

제약 조건

Range 가 테이블 또는 트리인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(QSpan<const int> path, int column)

pathcolumn 에 지정된 항목으로 저장된 값에 대한 변경 가능한 참조를 반환합니다. 항목이 다중 역할 항목인 경우 전체 항목에 대한 참조가 됩니다. Range 의 행이 서로 다른 열에 서로 다른 유형을 저장하는 경우 반환 유형은 QVariant 이 됩니다.

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

제약 조건

Range 이 변경 가능한 트리인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > auto QRangeModelAdapter::at(int row, int column)

rowcolumn 에 지정된 항목으로 저장된 값에 대한 변경 가능한 참조를 반환합니다. 항목이 다중 역할 항목인 경우 전체 항목에 대한 참조가 됩니다.

참고: 범위를 수정하면 해당 참조가 무효화됩니다. 참조를 수정하려면 참조에 새 값을 할당합니다. Range 에 저장된 값이 포인터가 아니라면 저장된 값의 개별 멤버에 액세스할 수 없습니다.

제약 조건

Range 가 변경 가능한 테이블인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> auto QRangeModelAdapter::at(QSpan<const int> path, int column) const

pathcolumn 에 지정된 항목으로 저장된 값의 복사본을 반환합니다. 항목이 다중 역할 항목인 경우 전체 항목의 복사본을 반환합니다. Range 의 행이 서로 다른 열에 서로 다른 유형을 저장하는 경우 반환 유형은 QVariant 이 됩니다.

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> auto QRangeModelAdapter::at(int row, int column) const

rowcolumn 에 지정된 항목으로 저장된 값의 복사본을 반환합니다. 항목이 다중 역할 항목인 경우 전체 항목의 복사본을 반환합니다. Range 의 행이 서로 다른 열에 서로 다른 유형을 저장하는 경우 반환 유형은 QVariant 이 됩니다.

제약 조건

Range 가 테이블 또는 트리인 경우에만 과부하 해결에 참여합니다.

int QRangeModelAdapter::columnCount() const

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

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true> QVariant QRangeModelAdapter::data(int row) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true> QVariant QRangeModelAdapter::data(int row, int role) const

row 에 있는 항목에 대해 지정된 role 에 저장된 데이터를 보유한 QVariant 을 반환하거나 항목이 없는 경우 잘못된 QVariant 을 반환합니다. role 을 지정하지 않으면 전체 항목이 포함된 QVariant 을 반환합니다.

제약 조건

Range 가 목록인 경우에만 과부하 해결에 참여합니다.

setData() 및 at()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> QVariant QRangeModelAdapter::data(QSpan<const int> path, int column) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> QVariant QRangeModelAdapter::data(QSpan<const int> path, int column, int role) const

pathcolumn 에서 참조하는 항목에 대해 지정된 role 에 저장된 데이터가 있는 QVariant 을 반환하거나 해당 직위 또는 역할에 저장된 데이터가 없는 경우 유효하지 않은 QVariant 을 반환합니다. role 을 지정하지 않으면 전체 항목이 저장된 QVariant 을 반환합니다.

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

setData() 및 at()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> QVariant QRangeModelAdapter::data(int row, int column) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> QVariant QRangeModelAdapter::data(int row, int column, int role) const

rowcolumn 에서 참조하는 항목에 대해 지정된 role 에 저장된 데이터가 있는 QVariant 을 반환하거나 해당 직위 또는 역할에 저장된 데이터가 없는 경우 유효하지 않은 QVariant 을 반환합니다. role 을 지정하지 않으면 전체 항목이 저장된 QVariant 을 반환합니다.

제약 조건

Range 가 테이블 또는 트리인 경우에만 과부하 해결에 참여합니다.

setData() 및 at()도 참조하세요 .

[constexpr] template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> bool QRangeModelAdapter::hasChildren(int row) const

[constexpr] template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> bool QRangeModelAdapter::hasChildren(QSpan<const int> row) const

row 아래에 행이 있는지 여부를 반환합니다.

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true> QModelIndex QRangeModelAdapter::index(int row) const

row 에 대해 QModelIndex 를 반환합니다.

제약 조건

Range 이 1차원 목록인 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> QModelIndex QRangeModelAdapter::index(QSpan<const int> path, int column) const

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

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

이것은 과부하 함수입니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true> QModelIndex QRangeModelAdapter::index(int row, int column) const

row, column 에서 항목에 대한 QModelIndex 을 반환합니다.

제약 조건

Range 가 테이블 또는 트리인 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertColumns<I> = true> bool QRangeModelAdapter::insertColumn(int before)

before 으로 지정된 열 앞에 하나의 빈 열을 모든 행에 삽입하고 삽입 성공 여부를 반환합니다. beforecolumnCount()와 같은 값이면 각 행에 열이 추가됩니다.

제약 조건

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

이것은 과부하 함수입니다.

removeColumn(), insertColumns() 및 insertRow()도 참조하세요 .

template < typename D, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertColumns<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_column_data<D> = true > bool QRangeModelAdapter::insertColumn(int before, D &&data)

before 에서 지정한 열 앞에 data 에서 구성된 단일 열을 모든 행에 삽입하고 삽입 성공 여부를 반환합니다. beforecolumnCount()와 같은 값이면 각 행에 열이 추가됩니다.

data 가 단일 값이면 모든 행의 새 항목이 해당 단일 값으로 구성됩니다.

data 가 컨테이너인 경우 해당 컨테이너의 요소를 순차적으로 사용하여 각 후속 행의 열을 구성합니다. data 의 요소 수가 행 수보다 적으면 함수가 래핑되어 첫 번째 요소부터 다시 시작됩니다.

제약 조건

Range 에 요소 삽입을 지원하는 행이 있고 data 의 항목에서 요소를 구성할 수 있는 경우에만 과부하 해결에 참여합니다.

이것은 과부하 함수입니다.

removeColumn(), insertColumns() 및 insertRow()도 참조하세요 .

template < typename C, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertColumns<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_column_range<C> = true > bool QRangeModelAdapter::insertColumns(int before, C &&data)

before 에서 지정한 열 앞에 data 의 요소로 구성된 열을 모든 행에 삽입하고 삽입 성공 여부를 반환합니다. beforecolumnCount()와 같은 값이면 각 행에 열이 추가됩니다.

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

data 의 요소가 컨테이너인 경우 외부 컨테이너의 항목이 순차적으로 사용되어 각 후속 행의 새 항목이 구성됩니다. data 의 요소 수가 행 수보다 적으면 함수가 래핑되어 첫 번째 요소부터 다시 시작됩니다.

제약 조건

Range 에 요소 삽입을 지원하는 행이 있고 data 의 항목으로 요소를 구성할 수 있는 경우에만 과부하 해결에 참여합니다.

removeColumns(), insertColumn() 및 insertRows()도 참조하세요 .

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::insertRow(QSpan<const int> before)

before 에 지정된 경로의 행 앞에 빈 행 하나를 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

Range 이 요소 삽입을 지원하는 트리인 경우에만 과부하 해결에 참여합니다.

이것은 과부하 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true> bool QRangeModelAdapter::insertRow(int before)

before 행 앞에 빈 행 하나를 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

Range 에서 요소 삽입을 지원하는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하세요 .

template < typename D, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_row<D> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::insertRow(QSpan<const int> before, D &&data)

before 행 앞에 data 에서 구성된 단일 행을 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

Range 이 요소 삽입을 지원하는 트리이고 data 에서 행을 구성할 수 있는 경우에만 과부하 해결에 참여합니다.

이것은 과부하 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하세요 .

template < typename D, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_row<D> = true > bool QRangeModelAdapter::insertRow(int before, D &&data)

before 행 앞에 data 에서 구성된 단일 행을 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

Range 에서 요소 삽입을 지원하고 data 에서 행을 구성할 수 있는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

insertRows(), removeRow() 및 insertColumn()도 참조하세요 .

template < typename C, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_row_range<C> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::insertRows(QSpan<const int> before, C &&data)

data 의 요소로 구성된 행을 before 의 행 앞에 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

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

이것은 과부하 함수입니다.

insertRow(), removeRows() 및 insertColumns()도 참조하세요 .

template < typename C, typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canInsertRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_compatible_row_range<C> = true > bool QRangeModelAdapter::insertRows(int before, C &&data)

data 의 요소로 구성된 행을 before 의 행 앞에 삽입하고 삽입 성공 여부를 반환합니다. beforerowCount()와 같은 값이면 새 행이 추가됩니다.

제약 조건

Range 에서 엘리먼트 삽입을 지원하고 data 의 엘리먼트로 행을 구성할 수 있는 경우에만 과부하 해결에 참여합니다.

이것은 과부하 함수입니다.

insertRow(), removeRows() 및 insertColumns()도 참조하세요 .

Model *QRangeModelAdapter::model() const

이 어댑터에서 생성한 QRangeModel 인스턴스를 반환합니다.

range() 및 at()도 참조하세요 .

template <typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true> bool QRangeModelAdapter::moveColumn(int from, int to)

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

제약 조건

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

insertColumn(), removeColumn(), moveColumns() 및 moveRow()도 참조하세요 .

template <typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true> bool QRangeModelAdapter::moveColumns(int from, int count, int to)

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

제약 조건

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

insertColumns(), removeColumns(), moveColumn() 및 moveRows()도 참조하세요 .

template < typename I, typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::moveRow(QSpan<const int> source, QSpan<const int> destination)

source 에 있는 트리 분기를 destination 의 위치로 이동하고 분기가 성공적으로 이동했는지 여부를 반환합니다.

제약 조건

Range 이 요소 이동을 지원하는 트리인 경우에만 과부하 해결에 참여합니다.

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

insertRow(), removeRow() 및 moveColumn()도 참조하세요 .

template <typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true> bool QRangeModelAdapter::moveRow(int source, int destination)

source 의 행을 destination 의 위치로 이동하고 행이 성공적으로 이동했는지 여부를 반환합니다.

제약 조건

Range 에서 요소 이동을 지원하는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

insertRow(), removeRow() 및 moveColumn()도 참조하세요 .

template < typename I, typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::moveRows(QSpan<const int> source, int count, QSpan<const int> destination)

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

제약 조건

Range 이 요소 이동을 지원하는 트리인 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

insertRows(), removeRows() 및 moveColumns()도 참조하세요 .

template <typename F, QRangeModelAdapter<Range, Protocol, Model>::if_canMoveItems<F> = true> bool QRangeModelAdapter::moveRows(int source, int count, int destination)

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

제약 조건

Range 에서 요소 이동을 지원하는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

insertRows(), removeRows() 및 moveColumns()도 참조하세요 .

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

모델 어댑터가 작동하는 범위에 대한 상수 참조를 반환합니다.

assign(), at() 및 model()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveColumns<I> = true> bool QRangeModelAdapter::removeColumn(int column)

각 행에서 주어진 column 을 제거하고 제거 성공 여부를 반환합니다.

제약 조건

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

insertColumn(), removeColumns() 및 removeRow()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveColumns<I> = true> bool QRangeModelAdapter::removeColumns(int column, int count)

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

제약 조건

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

insertColumns(), removeColumn() 및 removeRow()도 참조하세요 .

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::removeRow(QSpan<const int> path)

지정된 path 에서 해당 행의 모든 자식을 포함하여 행을 제거하고 제거 성공 여부를 반환합니다.

제약 조건

Range 이 요소 제거를 지원하는 트리인 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

removeRows(), removeColumn() 및 insertRow()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveRows<I> = true> bool QRangeModelAdapter::removeRow(int row)

주어진 row 을 제거하고 제거 성공 여부를 반환합니다.

제약 조건

Range 에서 요소 제거를 지원하는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

removeRows(), removeColumn() 및 insertRow()도 참조하세요 .

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveRows<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true > bool QRangeModelAdapter::removeRows(QSpan<const int> path, int count)

path 에서 지정한 행부터 시작하여 count 행을 제거하고 제거 성공 여부를 반환합니다.

제약 조건

Range 이 요소 제거를 지원하는 트리인 경우에만 과부하 해결에 참여합니다.

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

removeRow(), removeColumns() 및 insertRows()도 참조하세요 .

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_canRemoveRows<I> = true> bool QRangeModelAdapter::removeRows(int row, int count)

row 에서 시작하는 count 행을 제거하고 제거 성공 여부를 반환합니다.

제약 조건

Range 에서 요소 제거를 지원하는 경우에만 과부하 해결에 참여합니다.

이 함수는 과부하 함수입니다.

removeRow(), removeColumns() 및 insertRows()도 참조하세요 .

int QRangeModelAdapter::rowCount() const

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

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

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> int QRangeModelAdapter::rowCount(int row) const

template <typename I, QRangeModelAdapter<Range, Protocol, Model>::if_tree<I> = true> int QRangeModelAdapter::rowCount(QSpan<const int> row) const

row 아래의 행 수를 반환합니다.

제약 조건

Range 가 트리인 경우에만 과부하 해결에 참여합니다.

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::if_list<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > bool QRangeModelAdapter::setData(int row, const QVariant &value, int role = Qt::EditRole)

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

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

제약 조건

Range 가 변경 가능한 목록인 경우에만 과부하 해결에 참여합니다.

data() 및 at()도 참조하세요 .

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

pathcolumn 에서 참조하는 항목의 role 데이터를 value 으로 설정합니다.

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

제약 조건

Range 가 가변 트리인 경우에만 과부하 해결에 참여합니다.

data() 및 at()도 참조하세요 .

template < typename I, QRangeModelAdapter<Range, Protocol, Model>::unless_list<I> = true, QRangeModelAdapter<Range, Protocol, Model>::if_writable<I> = true > bool QRangeModelAdapter::setData(int row, int column, const QVariant &value, int role = Qt::EditRole)

rowcolumn 에서 참조하는 항목의 role 데이터를 value 으로 설정합니다.

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

제약 조건

Range 가 목록이 아닌 변경 가능한 경우에만 과부하 해결에 참여합니다.

data() 및 at()도 참조하세요 .

관련 비회원

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

lhsrhs 과 같지 않은지 여부를 반환합니다. 두 어댑터가 모두 동일한 model 인스턴스를 보유하고 있다면 두 어댑터는 동일합니다.

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

lhsrhs 과 같은지 여부를 반환합니다. 두 어댑터가 모두 동일한 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.