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 |
| 等価性 | Range. |
パブリック型
(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[]())は値への不変アクセスを提供しますが、可変オーバーロードは新しい値を代入できる参照オブジェクトを返します。 なお、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 など、実行時サイズを持つ行型を使用する場合は 、新しい行が正しいサイズであることを確認してください。
ツリー行へのアクセス
ツリー内の行は、ツリーの各レベルごとに1つのエントリとなる整数のシーケンスによって指定されます。以下のスニペットでは、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(autobook : 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 イテレータも可変イテレータも、参照を解除すると行のラッパー型になります。これにより、基になる行の型が範囲(range)でなかった場合(例えば、タプルやガジェットである場合など)でも、行内の各項目を一貫して反復処理できるようになります。
for(const auto &row: std::as_const(table)) {
for(const auto &item: row) {
qDebug() << item; // item is a QVariant
}
}可変テーブルを反復処理する際、行全体を上書きすることができます。
for(autorow : 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() という 2 つの追加のメンバ関数があり、これらを使用することで、イテレータを用いてツリー全体を走査することができます。
for (auto row : tree) {
if (row.hasChildren()) {
for (auto child : row.children()) {
// ~~~
}
}
}children() が返すオブジェクトは、呼び出し元と同じモデル上で動作する QRangeModelAdapter ですが、すべての操作ではソース行のインデックスが親インデックスとして使用されます。
QRangeModelも参照してください 。
メンバー関数のドキュメント
[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)
models の内容を、範囲 [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 が可変テーブルである場合にのみ、オーバーロード解決の対象となります。
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 にアイテムとして格納されている値のコピーを返します。アイテムがマルチロールアイテムである場合、この関数はアイテム全体のコピーを返します。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 がリストである場合にのみ、オーバーロード解決の対象となります。
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 がツリーである場合にのみ、オーバーロード解決の対象となります。
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 がテーブルまたはツリーである場合にのみ、オーバーロード解決の対象となります。
[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 で導入されました。
[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 で指定された列の前に、すべての行に対して1つの空の列を挿入し、挿入が成功したかどうかを返します。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 で指定されたパスにある行の前に、空の行を1つ挿入し、挿入が成功したかどうかを返します。before の値がrowCount()の値と同じ場合、新しい行は末尾に追加されます。
制約
Range が要素の挿入をサポートする木である場合にのみ、オーバーロード解決の対象となります。
これはオーバーロードされた関数です。
insertRows()、removeRow()、およびinsertColumn()も参照してください 。
template <typename I> requires if_canInsertRows<I> bool QRangeModelAdapter::insertRow(int before)
before の行の前に、空の行を1つ挿入し、挿入が成功したかどうかを返します。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 にある行の前に、空の行を1行挿入し、挿入が成功したかどうかを返します。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 から構成された1行を挿入し、挿入が成功したかどうかを返します。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 が可変リストである場合にのみ、オーバーロードの解決の対象となります。
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 が可変ツリーである場合にのみ、オーバーロードの解決に参加します。
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 が可変であり、かつリストでない場合にのみ、オーバーロードの解決の対象となります。
[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 で導入されました。
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 に代入できる場合にのみ、オーバーロード解決の対象となります。
関連する非メンバー
[noexcept] bool operator!=(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)
lhs がrhs と等しくないかどうかを返します。2つのアダプタは、どちらも同じmodel インスタンスを保持している場合に等しいとみなされます。
[noexcept] bool operator==(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)
lhs がrhs と等しいかどうかを返します。2つのアダプタは、どちらも同じ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.