QRangeModelAdapter Class
QRangeModelAdapter offre un accès conforme à l'interface « QAbstractItemModel » à n'importe quelle plage C++. En savoir plus...
| En-tête : | #include <QRangeModelAdapter> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Depuis : | Qt 6.11 |
| Statut : | Aperçu technologique |
Cette classe est en avant-première technologique et est susceptible d'être modifiée.
Comparaisons QRangeModelAdapter
| Catégorie | Types comparables |
|---|---|
| égalité | QRangeModelAdapter |
| égalité | Range. |
Types publics
(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 |
Fonctions publiques
| 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 |
Types privés
Éléments non membres associés
| 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) |
Description détaillée
QRangeModelAdapter fournit une API C++ sécurisée au niveau des types et tenant compte de la structure, autour d’une plage C++ et d’une instance de ` QRangeModel`. Les modifications apportées à la plage C++ à l’aide de l’adaptateur informent les clients de l’ QRangeModel de ces changements. Cela garantit que les vues des éléments sont mises à jour, que les caches sont vidés et que les index des éléments persistants sont invalidés et adaptés correctement.
Construction et propriété du modèle
QRangeModelAdapter doit être instancié à partir d’une plage C++. Comme pour QRangeModel, la plage peut être fournie sous forme de référence lvalue ou rvalue, en tant que wrapper de référence, ou encore sous forme de pointeur brut ou intelligent.
std::vector<int> data = {1, 2, 3, 4, 5};
QRangeModelAdapter adapter(&data);Le type exact qui est instancié est déduit par le compilateur en fonction du ou des arguments du constructeur, et les différences entre les catégories de valeurs peuvent entraîner des comportements différents. Par conséquent, vous ne devez pas spécifier explicitement les paramètres du modèle. Le C++ n’autorise toutefois pas la déduction des arguments de modèle de classe pour les membres de données de classe non statiques. Pour faire de QRangeModelAdapter un membre de données d’une classe, utilisez le modèle suivant :
class Backend
{
using Adapter = decltype(QRangeModelAdapter(std::vector<Book>{}));
Adapter adapter = Adapter(std::vector<Book>{});Cela crée un QRangeModelAdapter agissant sur un vecteur anonyme (c'est-à-dire une référence rvalue) de Books. Pour que l'adaptateur agisse sur un wrapper de référence vers une liste de Books, utilisez plutôt ceci :
QList<Book> books = { /* ... */ };
using Adapter = decltype(QRangeModelAdapter(std::ref(books)));
Adapter adapter = Adapter(std::ref(books));
};La construction de l’adaptateur à partir d’une plage construit implicitement une instance d’ QRangeModel à partir de cette même plage. Utilisez ` model()` pour l’obtenir, puis transmettez-la aux vues d’éléments ` Qt Widgets ` ou ` Qt Quick ` comme d’habitude.
QListView listView;
listView.setModel(adapter.model());L’adaptateur est propriétaire du modèle. QRangeModelAdapter est un type de valeur, il peut donc être copié et déplacé. Toutes les copies partagent le même QRangeModel, qui sera détruit lorsque la dernière copie de l’adaptateur sera détruite.
Si l’adaptateur a été créé à partir d’une référence lvalue ou rvalue, l’adaptateur et le modèle opéreront alors sur une copie de l’objet de plage d’origine. Dans le cas contraire, les modifications effectuées via l’adaptateur ou le modèle seront écrites dans l’objet de plage d’origine. Pour accéder à la plage mise à jour, utilisez ` 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();Pour remplacer l’intégralité des données de la plage par celles d’une autre plage (compatible), utilisez la fonction assign() ou l’opérateur d’affectation.
// reset to the original
adapter = books;
// or
adapter.assign(books);Accès aux données des éléments
L’API QRangeModelAdapter fournit un accès en lecture et en écriture sécurisé au niveau des types à la plage sur laquelle le modèle opère. L’API de l’adaptateur repose sur l’API classique des conteneurs et plages C++, y compris les itérateurs. Pour accéder à des lignes et des éléments individuels, utilisez at(), l’ operator[]-indice correspondant ou data(). Les surcharges disponibles de ces fonctions dépendent de la plage pour laquelle l’adaptateur a été construit.
Lecture des données d’un élément sous forme de QVariant
La fonction data() renvoie toujours un QVariant contenant la valeur stockée à la position et au rôle spécifiés. Dans une liste, on peut accéder à un élément à l’aide d’un simple entier indiquant la ligne :
QVariant listItem = listAdapter.data(row);Si la plage est un tableau, les éléments sont alors spécifiés par ligne et colonne :
QVariant tableItem = tableAdapter.data(row, column);Si la plage est une arborescence, les éléments sont localisés à l’aide d’un chemin composé de lignes et d’une seule valeur de colonne :
QVariant treeItem = treeAdapter.data({path, to, branch}, column);L'utilisation d'un seul entier comme ligne permet d’accéder aux éléments de niveau supérieur de l’arborescence.
QRangeModelAdapter listOfBooks(QList<Book>{
// ~~~
});
QString bookTitle = listOfBooks.data(0, Book::TitleRole).toString();
Book multiRoleItem = listOfBooks.data(0).value<Book>();Si aucun rôle n'est spécifié, la fonction « QVariant » conservera l'élément entier à cet emplacement. Utilisez la fonction modèle « QVariant::fromValue() » pour récupérer une copie de l'élément.
Lecture et écriture à l'aide de at()
Le fait que la fonction ` data()` renvoie un ` QVariant ` la rend flexible, mais supprime la sécurité de type. Pour les plages dont tous les éléments sont du même type, la fonction ` at()` offre une alternative sécurisée au niveau du type, plus compatible avec les conteneurs C++ classiques. Comme pour ` data()`, il existe des surcharges de ` at()` permettant d’accéder à un élément à une ligne pour les listes, à une paire ligne/colonne pour les tableaux et à une paire chemin/colonne pour les arbres. Cependant, ` at()` renvoie toujours l’élément entier à la position spécifiée ; il n’est pas possible de lire les valeurs individuelles des champs d’un élément.
Comme on peut s’y attendre d’une API de conteneurs C++, les surcharges const de at() (et l’ operator[]( ) correspondant) fournissent un accès immuable à la valeur, tandis que les surcharges mutables renvoient un objet de référence auquel une nouvelle valeur peut être attribuée. Notez qu’un QRangeModelAdapter opérant sur une plage const se comporte à cet égard comme un QRangeModelAdapter const. Les surcharges mutables sont supprimées de l’ensemble des surcharges ; le compilateur sélectionnera donc toujours la version `const`. Tenter d’appeler une fonction qui modifie une plage entraînera une erreur de compilation, même si l’adaptateur lui-même est mutable :
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 satisfiedLes objets de référence renvoyés sont des wrappers qui se convertissent implicitement en type sous-jacent ; ils disposent d’une fonction ` get()` permettant d’accéder explicitement à la valeur sous-jacente, ainsi que d’une fonction ` operator->()` qui offre un accès direct aux fonctions membres `const`. Cependant, afin d’empêcher toute modification accidentelle des données qui contournerait le protocole de notification ` QAbstractItemModel `, ces objets de référence empêchent toute modification directe des éléments.
Remarque : l’accès à l’objet de référence entraîne toujours un appel au modèle pour obtenir une copie de la valeur. Cela peut être coûteux en ressources ; pour les accès aux données où les performances sont critiques, stockez une copie.
Accès aux éléments
Si la plage est représentée sous forme de liste, seules les surcharges prenant une ligne sont disponibles.
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);La surcharge `const` renvoie l'élément situé à cette ligne, tandis que la surcharge `mutable` renvoie un conteneur qui effectue implicitement la conversion vers et depuis le type de valeur de la liste.
QRangeModelAdapter books(QList<Book>{
// ~~~
});
Book firstBook = books.at(0);
Book newBook = {};
books.at(0) = newBook; // dataChanged() emittedAttribuez une valeur à l’objet wrapper pour modifier les données de la liste. Le modèle émettra des appels à ` dataChanged()` pour tous les rôles.
Lorsque vous utilisez les surcharges « mutable », vous pouvez également accéder aux membres « const » du type d’élément à l’aide de l’opérateur flèche surchargé.
QString title = books.at(0)->title();Il n’est pas possible d’accéder aux membres non const de l’élément. De telles modifications contourneraient l’adaptateur, qui ne pourrait pas notifier le modèle de ces changements. Pour modifier la valeur stockée dans le modèle, effectuez une copie, modifiez les propriétés de cette copie, puis réécrivez-la.
// 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() emittedCela provoquera l’émission par le modèle d’un appel à ` dataChanged()` pour cet élément, et pour tous les rôles.
Si la plage est représentée sous forme de tableau, vous pouvez alors accéder à un élément individuel par ligne et par colonne, à l’aide de la surcharge ` at(row, column)`. Pour les arborescences, cette surcharge donne accès aux éléments de niveau supérieur, tandis que la surcharge ` at(path, column)` permet d’accéder aux éléments imbriqués dans l’arborescence.
L'accès à un élément individuel dans un tableau ou une arborescence équivaut à l'accès à un élément dans une liste.
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.0Si la plage ne stocke pas toutes les colonnes en utilisant le même type de données, alors ` at(row,column) ` renvoie un (objet de référence contenant un) ` QVariant ` contenant l'élément.
QRangeModelAdapter table(std::vector<std::tuple<int, QString>>{
// ~~~
});
int number = table.at(0, 0)->toInt();
QString text = table.at(0, 1)->toString();Accès aux lignes dans les tables et les arborescences
Pour les tables et les arborescences, les surcharges de ` at()` et de l'operator[] e d'indice ` ()` sans paramètre de colonne permettent d'accéder à la ligne entière. La valeur renvoyée par les surcharges const sera un type de référence donnant accès aux données de la ligne. Si cette ligne contient des pointeurs, ce type de référence constituera alors une vue de la ligne, donnant accès à des pointeurs vers des éléments const.
Accès aux lignes d'une table
La surcharge ` at(int)` est toujours disponible, mais elle renvoie la ligne de table dans son intégralité. Cela permet de manipuler toutes les valeurs de la ligne en une seule fois.
const auto &constTable = table;
const std::vector<double> &topRow = constTable.at(0);Comme pour les éléments, la surcharge `const` fournit un accès direct au type de ligne, tandis que la surcharge `mutable` renvoie un wrapper qui fait office de référence à la ligne. Le wrapper permet d'accéder aux fonctions membres `const` à l'aide de l'opérateur flèche surchargé. Pour modifier les valeurs, il suffit de réécrire un type de ligne modifié.
auto lastRow = table.at(table.rowCount() - 1);
lastRow = { 6.5, 7.5, 8.0, 9.0, 10 }; // emits dataChanged() for entire rowLorsqu’une nouvelle valeur est attribuée à la ligne, le modèle émet le signal ` dataChanged()` pour tous les éléments de la ligne et pour tous les rôles.
Remarque : lorsque vous utilisez un type de ligne dont la taille est déterminée à l’exécution, tel qu’un ` std::vector ` ou un ` QList`, assurez-vous que la nouvelle ligne a la taille correcte.
Accès aux lignes d’arborescence
Les lignes dans les arbres sont spécifiées par une séquence d’entiers, une entrée pour chaque niveau de l’arbre. Notez que dans les extraits de code suivants, l’objet `Tree` est une plage contenant des pointeurs bruts vers les lignes, et que l’adaptateur est créé à l’aide d’une référence rvalue de cette plage. Cela confère à l’ QRangeModel la propriété des données de la ligne.
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});La surcharge de la méthode ` at()` prenant une seule valeur de ligne permet d’accéder aux lignes de niveau supérieur, ou aux éléments contenus dans ces lignes.
auto germanyName = tree.at(0, 0);
auto bavariaSize = tree.at({0, 0}, 1);Le principe de base pour accéder aux lignes et aux éléments d’une arborescence est identique à celui utilisé pour accéder aux lignes et aux éléments d’une table. Cependant, l’adaptateur veillera à ce que la structure arborescente soit préservée lors de la modification de lignes entières.
// deletes the old row - tree was moved in
tree.at({0, 0}) = new TreeRow{"Berlin", 892};Dans cet exemple, un nouvel objet ligne est créé et affecté au premier enfant du premier élément de niveau supérieur.
API d'itérateur
Utilisez les fonctions `begin()` et `end()` pour obtenir des itérateurs sur les lignes du modèle, ou utilisez la syntaxe `ranged-for`. Si la plage est une liste d'éléments, le déréférencement de l'itérateur donnera accès aux données des éléments.
for (const auto &book: std::as_const(books)) {
qDebug() << "The book" << book.title()
<< « écrit par » << book.author()
<< « a » << book.rating() << « étoiles »;
}Comme pour les surcharges const et mutable de la fonction at(), un itérateur mutable sera déréférencé vers un wrapper.
for (auto livre : livres) {
qDebug() << "The book" << book->title()
<< « écrit par » << book->author()
<< « a » << book->rating() << « étoiles »;
Book copy = book;
copy.setRating(copy.rating() + 1);
book = copy;
}Utilisez l’opérateur flèche surchargé pour accéder aux membres const du type d’élément, puis effectuez une affectation à l’objet wrapper pour remplacer la valeur.
Si la plage est un tableau ou une arborescence, l'itération sur le modèle donnera accès aux lignes.
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;
}Les itérateurs constants et mutables renvoient tous deux à un type d'encapsulation pour la ligne. Cela garantit que nous pouvons parcourir de manière cohérente chaque élément de la ligne, même si le type de ligne sous-jacent n'est pas une plage (il peut s'agir, par exemple, d'un tuple ou d'un gadget).
for (const auto &row: std::as_const(table)) {
for (const auto &item: row) {
qDebug() << item; // item is a QVariant
}
}Lorsqu'on itère sur une table modifiable, on peut écraser la ligne entière.
for (auto row : table) {
qDebug() << "Number is" << row->first << "and string is" << row->second;
row = std::make_pair(42, u"forty-two"_s);
}Le modèle émet le signal dataChanged() pour tous les éléments de toutes les lignes, et pour tous les rôles.
for (auto row : table) {
for (auto item : row) {
item = 42;
}
}Itérer sur les lignes modifiables nous permet de modifier des éléments individuels.
Lorsqu’on parcourt un arbre, le wrapper de ligne dispose de deux fonctions membres supplémentaires, ` hasChildren()` et `children()`, qui permettent de parcourir l’arbre entier à l’aide d’itérateurs.
for (auto row : tree) {
if (row.hasChildren()) {
for (auto child : row.children()) {
// ~~~
}
}
}L'objet renvoyé par `children()` est un `QRangeModelAdapter` fonctionnant sur le même modèle que l'objet appelé, mais toutes les opérations utiliseront l'index de la ligne source comme index parent.
Voir également QRangeModel.
Documentation sur les fonctions des membres
[implicit] QRangeModelAdapter::QRangeModelAdapter(Range &&range)
[implicit] QRangeModelAdapter::QRangeModelAdapter(Range &&range, Protocol &&protocol)
Crée un objet ` QRangeModelAdapter ` qui opère sur ` range`. Pour les plages d'arbres, le paramètre facultatif ` protocol ` sera utilisé pour le parcours de l'arbre.
Consultez la documentation du constructeur QRangeModel pour plus de détails sur les exigences relatives à Range, et sur la manière dont la catégorie de valeur de range modifie l’interaction entre l’adaptateur, le modèle et la plage.
Voir également QRangeModel.
template < typename InputIterator, typename Sentinel, typename I > requires if_writable<I> void QRangeModelAdapter::assign(InputIterator first, Sentinel last)
Remplace le contenu des modèles par les lignes comprises dans l'intervalle [first, last).
Voir également range(), at et 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)
Renvoie un objet ` mutable wrapper ` contenant une référence à la ligne de l'arborescence spécifiée par ` path`.
Pour modifier la ligne de l'arborescence, attribuez-lui une nouvelle valeur. L’affectation d’une nouvelle ligne d’arborescence définira le parent de cette nouvelle ligne comme étant le parent de l’ancienne ligne d’arborescence. Cependant, ni l’ancienne ni la nouvelle ligne d’arborescence ne doivent comporter de lignes enfants. Pour accéder à la ligne d’arborescence, déréférencez le wrapper à l’aide de ` operator*()`, ou utilisez ` operator->() ` pour accéder aux membres de la ligne d’arborescence.
Remarque : toute modification de la plage invalidera le wrapper.
Contraintes
Ne participe à la résolution de surcharge que si ` Range ` est un arbre.
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)
Renvoie une référence de type « mutable reference » à la valeur stockée dans « Range ».
Remarque : toute modification apportée à la plage invalidera cette référence. Pour modifier la référence, attribuez-lui une nouvelle valeur. À moins que la valeur stockée dans l’ Range ne soit un pointeur, il n’est pas possible d’accéder aux membres individuels de la valeur stockée.
Contraintes
Ne participe à la résolution des surcharges que si Range est une liste modifiable.
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)
Renvoie un objet ` reference wrapper ` correspondant à la ligne située à l'adresse ` tableRow`, telle qu'elle est stockée dans ` Range`.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est une table modifiable, mais pas un arbre.
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)
Renvoie un objet ` reference wrapper ` correspondant à la ligne située à l'adresse ` treeRow`, telle qu'elle est stockée dans ` Range`.
Pour modifier la ligne de l'arborescence, attribuez-lui une nouvelle valeur. L'affectation d'une nouvelle ligne d'arborescence définira le parent de cette nouvelle ligne comme étant le parent de l'ancienne ligne d'arborescence. Cependant, ni l'ancienne ni la nouvelle ligne d'arborescence ne doivent comporter de lignes enfants. Pour accéder à la ligne d'arborescence, déréférencez le wrapper à l'aide de operator*(), ou utilisez operator->() pour accéder aux membres de la ligne d'arborescence.
Remarque : toute modification apportée à la plage invalidera le wrapper.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre.
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
Renvoie une référence constante à la ligne spécifiée par ` path`, telle qu'elle est stockée dans ` Range`.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre.
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
Renvoie la valeur située à l'adresse listRow sous la forme du type stocké à l'adresse Range.
Contraintes
Ne participe à la résolution des surcharges que si Range est une liste.
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
Renvoie une référence constante à la ligne située à l'adresse tableRow, telle qu'elle est stockée dans Range.
Contraintes
Ne participe à la résolution des surcharges que si Range est une table ou un arbre.
template <typename I> requires if_tree<I> && if_writable<I> auto QRangeModelAdapter::at(QSpan<const int> path, int column)
Renvoie une référence de type « mutable reference » à la valeur stockée dans l'élément spécifié par « path » et « column ». Si l'élément est un élément à rôles multiples, il s'agira d'une référence à l'élément dans son intégralité. Si les lignes de la « Range » stockent différents types dans différentes colonnes, le type de retour sera un « QVariant ».
Remarque : toute modification apportée à la plage invalidera cette référence. Pour modifier la référence, attribuez-lui une nouvelle valeur. À moins que la valeur stockée dans l’ Range ne soit un pointeur, il n’est pas possible d’accéder aux membres individuels de la valeur stockée.
Contraintes
Ne participe à la résolution de surcharge que si l’ Range est un arbre modifiable.
template <typename I> requires unless_list<I> && if_writable<I> auto QRangeModelAdapter::at(int tableRow, int column)
Renvoie une référence de type « mutable reference » à la valeur stockée sous la forme de l'élément spécifié par « tableRow » et « column ». Si l'élément est un élément à rôles multiples, il s'agira alors d'une référence à l'élément dans son intégralité.
Remarque : toute modification apportée à la plage invalidera cette référence. Pour modifier la référence, attribuez-lui une nouvelle valeur. À moins que la valeur stockée dans l’ Range ne soit un pointeur, il n’est pas possible d’accéder aux membres individuels de la valeur stockée.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est une table modifiable.
template <typename I> requires if_tree<I> auto QRangeModelAdapter::at(QSpan<const int> path, int column) const
Renvoie une copie de la valeur stockée sous la forme de l'élément spécifié par path et column. Si l'élément est un élément à rôles multiples, cette fonction renvoie une copie de l'élément dans son intégralité. Si les lignes de l'Range stockent différents types dans différentes colonnes, le type de retour sera un QVariant.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre.
template <typename I> requires unless_list<I> auto QRangeModelAdapter::at(int tableRow, int column) const
Renvoie une copie de la valeur stockée sous la forme de l'élément spécifié par tableRow et column. Si l'élément est un élément à rôles multiples, cette fonction renvoie une copie de l'élément dans son intégralité. Si les lignes de l'Range stockent différents types dans différentes colonnes, le type de retour sera un QVariant.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est une table ou un arbre.
[since 6.12] template <typename I> requires if_writable<I> auto QRangeModelAdapter::at(const QModelIndex &index)
Renvoie une référence de type « mutable reference » à la valeur stockée en tant qu’élément à l’adresse index. Si l’élément est un élément à rôles multiples, il s’agira alors d’une référence à l’élément dans son intégralité. Si les lignes de l’ Range stockent différents types dans différentes colonnes, le type de retour sera un « QVariant ».
Remarque : toute modification de la plage invalidera cette référence. Pour modifier la référence, attribuez-lui une nouvelle valeur. À moins que la valeur stockée dans Range ne soit un pointeur, il n’est pas possible d’accéder aux membres individuels de la valeur stockée.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` n’est pas en lecture seule.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
[since 6.12] auto QRangeModelAdapter::at(const QModelIndex &index) const
Renvoie une copie de la valeur stockée en tant qu’élément à l’adresse index. Si l’élément est un élément à rôles multiples, cette fonction renvoie une copie de l’élément dans son intégralité. Si les lignes de l’ Range stockent différents types dans différentes colonnes, le type de retour sera un QVariant.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
int QRangeModelAdapter::columnCount() const
Renvoie le nombre de colonnes. Cette valeur sera égale à 1 si l'Range e une liste ; sinon, elle correspondra au nombre d'éléments dans chaque ligne.
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
Renvoie un objet ` QVariant ` contenant les données stockées sous l'role donné pour l'élément situé à l'adresse listRow, ou un objet ` QVariant ` non valide s'il n'existe aucun élément. Si l'adresse role n'est pas spécifiée, renvoie alors un objet ` QVariant ` contenant l'élément complet.
Contraintes
Ne participe à la résolution des surcharges que si Range est une liste.
Voir également setData() et 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
Renvoie un objet ` QVariant ` contenant les données stockées sous l'role donné pour l'élément référencé par ` path ` et ` column`, ou un objet ` QVariant ` non valide s'il n'y a pas de données stockées pour cette position ou ce rôle. Si ` role ` n'est pas spécifié, renvoie un objet ` QVariant ` contenant l'élément complet.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre.
Voir également setData() et 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
Renvoie une instance de ` QVariant ` contenant les données stockées sous l'role spécifié pour l'élément référencé par ` tableRow ` et ` column`, ou une instance de ` QVariant ` non valide s'il n'y a pas de données stockées pour cette position ou ce rôle. Si ` role ` n'est pas spécifié, renvoie une instance de ` QVariant ` contenant l'élément complet.
Contraintes
Ne participe à la résolution des surcharges que si Range est une table ou un arbre.
Voir également setData() et at().
[since 6.12] QVariant QRangeModelAdapter::data(const QModelIndex &index) const
[since 6.12] QVariant QRangeModelAdapter::data(const QModelIndex &index, int role) const
Renvoie un objet ` QVariant ` contenant les données stockées sous l’ role spécifié pour l’élément situé à l’adresse ` index`, ou un objet ` QVariant ` non valide s’il n’y a pas de données stockées pour cette position ou ce rôle. Si ` role ` n’est pas spécifié, renvoie alors un objet ` QVariant ` contenant l’élément complet.
Ces fonctions ont été introduites dans Qt 6.12.
Voir également setData() et 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
Indique s'il existe des lignes dans la table « row ».
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre.
[constexpr, since 6.12] template <typename I> requires if_tree<I> bool QRangeModelAdapter::hasChildren(const QModelIndex &index) const
Indique s'il existe des lignes sous index.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
template <typename I> requires if_list<I> QModelIndex QRangeModelAdapter::index(int listRow) const
Renvoie l'QModelIndex pour listRow.
Contraintes
Ne participe à la résolution des surcharges que si Range est une liste unidimensionnelle.
Il s'agit d'une fonction surchargée.
template <typename I> requires if_tree<I> QModelIndex QRangeModelAdapter::index(QSpan<const int> path, int column) const
Renvoie l'QModelIndex e de l'élément situé à l'adresse column correspondant à la ligne de l'arborescence spécifiée par path.
Contraintes
Ne participe à la résolution de surcharge que si Range est un arbre.
Il s'agit d'une fonction surchargée.
template <typename I> requires unless_list<I> QModelIndex QRangeModelAdapter::index(int tableRow, int column) const
Renvoie l'QModelIndex s relatives à l'élément disponible à l'adresse tableRow, column.
Contraintes
Ne participe à la résolution des surcharges que si Range est une table ou un arbre.
Il s'agit d'une fonction surchargée.
template <typename I> requires if_canInsertColumns<I> bool QRangeModelAdapter::insertColumn(int before)
Insère une seule colonne vide avant la colonne spécifiée par ` before ` dans toutes les lignes, et renvoie si l'insertion a réussi. Si ` before ` a la même valeur que ` columnCount()`, alors la colonne sera ajoutée à la fin de chaque ligne.
Contraintes
Ne participe à la résolution des surcharges que si Range contient des lignes prenant en charge l’insertion d’éléments.
Il s’agit d’une fonction surchargée.
Voir également removeColumn(), insertColumns() et insertRow().
template <typename D, typename I> requires if_canInsertColumns<I> && if_compatible_column_data<D> bool QRangeModelAdapter::insertColumn(int before, D &&data)
Insère dans toutes les lignes une colonne unique construite à partir de ` data ` avant la colonne spécifiée par ` before `, et renvoie si l'insertion a réussi. Si ` before ` a la même valeur que ` columnCount()` (), alors la colonne sera ajoutée à la fin de chaque ligne.
Si ` data ` est une valeur unique, la nouvelle entrée de toutes les lignes sera construite à partir de cette valeur unique.
Si data est un conteneur, les éléments de ce conteneur seront utilisés séquentiellement pour construire la colonne de chaque ligne suivante. S’il y a moins d’éléments dans data que de lignes, la fonction recommence à partir du premier élément.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` comporte des lignes prenant en charge l'insertion d'éléments, et si les éléments peuvent être construits à partir des entrées de ` data`.
Il s’agit d’une fonction surchargée.
Voir aussi removeColumn(), insertColumns() et insertRow().
template <typename C, typename I> requires if_canInsertColumns<I> && if_compatible_column_range<C> bool QRangeModelAdapter::insertColumns(int before, C &&data)
Insère dans toutes les lignes les colonnes constituées des éléments de ` data ` avant la colonne spécifiée par ` before `, et renvoie si l'insertion a réussi. Si ` before ` a la même valeur que ` columnCount()`, alors la colonne sera ajoutée à la fin de chaque ligne.
Si les éléments de ` data ` sont des valeurs, les nouvelles entrées de toutes les lignes seront alors construites à partir de ces valeurs.
Si les éléments de data sont des conteneurs, les entrées du conteneur externe seront utilisées séquentiellement pour construire les nouvelles entrées de chaque ligne suivante. S’il y a moins d’éléments dans data que de lignes, la fonction revient au début et recommence à partir du premier élément.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` comporte des lignes prenant en charge l’insertion d’éléments, et si ces éléments peuvent être construits à partir des entrées de ` data`.
Voir également removeColumns(), insertColumn() et insertRows().
template <typename I> requires if_canInsertRows<I> && if_tree<I> bool QRangeModelAdapter::insertRow(QSpan<const int> before)
Insère une seule ligne vide avant la ligne située à l'emplacement spécifié par ` before`, et indique si l'insertion a réussi. Si ` before ` a la même valeur que ` rowCount()` (), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution de surcharge que si Range est un arbre prenant en charge l’insertion d’éléments.
Il s'agit d'une fonction surchargée.
Voir également insertRows(), removeRow() et insertColumn().
template <typename I> requires if_canInsertRows<I> bool QRangeModelAdapter::insertRow(int before)
Insère une seule ligne vide avant la ligne située à l'adresse before et indique si l'insertion a réussi. Si before a la même valeur que rowCount(), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge l'insertion d'éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRows(), removeRow() et 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)
Insère une seule ligne générée à partir de data avant la ligne située à l'adresse before, et renvoie si l'insertion a réussi. Si before a la même valeur que rowCount(), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge l’insertion d’éléments, et si une ligne peut être construite à partir de data.
Il s'agit d'une fonction surchargée.
Voir également insertRows(), removeRow() et insertColumn().
template <typename D, typename I> requires if_canInsertRows<I> && if_compatible_row<D> bool QRangeModelAdapter::insertRow(int before, D &&data)
Insère une ligne unique créée à partir de data avant la ligne située à l'adresse before, et indique si l'insertion a réussi. Si before contient la même valeur que rowCount(), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge l’insertion d’éléments et si une ligne peut être construite à partir de data.
Il s'agit d'une fonction surchargée.
Voir également insertRows(), removeRow() et insertColumn().
template <typename I> requires if_canInsertRows<I> && if_tree<I> bool QRangeModelAdapter::insertRow(int before, const QModelIndex &parent)
Insère une seule ligne vide avant la ligne située à l'adresse before dans l'parent spécifié, et renvoie un indicateur indiquant si l'insertion a réussi. Si before a la même valeur que rowCount(), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge l’insertion d’éléments.
Il s'agit d'une fonction surchargée.
Voir également insertRows(), removeRow() et 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)
Insère une seule ligne construite à partir de ` data ` avant la ligne située à ` before ` dans la table spécifiée ` parent`, et renvoie si l'insertion a réussi. Si ` before ` a la même valeur que ` rowCount()`, la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge l’insertion d’éléments, et si une ligne peut être construite à partir de data.
Il s’agit d’une fonction surchargée.
Voir également insertRows(), removeRow() et 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)
Insère des lignes constituées des éléments de ` data ` avant la ligne située à l'adresse ` before`, et indique si l'insertion a réussi. Si ` before ` est identique à la valeur renvoyée par ` rowCount()`, la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge l’insertion d’éléments et si des lignes peuvent être construites à partir des éléments de data.
Il s'agit d'une fonction surchargée.
Voir également insertRow(), removeRows() et insertColumns().
template <typename C, typename I> requires if_canInsertRows<I> && if_compatible_row_range<C> bool QRangeModelAdapter::insertRows(int before, C &&data)
Insère les lignes constituées des éléments de ` data ` avant la ligne située à l'adresse ` before`, et indique si l'insertion a réussi. Si ` before ` a la même valeur que ` rowCount()` (), la nouvelle ligne sera alors ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge l’insertion d’éléments et si des lignes peuvent être construites à partir des éléments de data.
Il s’agit d’une fonction surchargée.
Voir également insertRow(), removeRows() et 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)
Insère les lignes constituées des éléments de data avant la ligne située à l'adresse before dans la table spécifiée parent, et renvoie si l'insertion a réussi. Si before a la même valeur que rowCount(), alors la nouvelle ligne sera ajoutée à la fin.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge l’insertion d’éléments, et si des lignes peuvent être construites à partir des éléments de data.
Il s'agit d'une fonction surchargée.
Voir également insertRow(), removeRows() et insertColumns().
Model *QRangeModelAdapter::model() const
Renvoie l'instance QRangeModel créée par cet adaptateur.
Voir également range() et at().
template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveColumn(int from, int to)
Déplace la colonne située à l'adresse from vers celle située à l'adresse to, puis indique si le déplacement s'est déroulé avec succès.
Contraintes
Ne participe à la résolution des surcharges que si Range contient des lignes prenant en charge le déplacement d’éléments.
Voir également insertColumn(), removeColumn(), moveColumns() et moveRow().
template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveColumns(int from, int count, int to)
Déplace les colonnes de l'count, dont l'adresse de départ est from, vers l'adresse to, puis indique si le déplacement des colonnes s'est déroulé avec succès.
Contraintes
Ne participe à la résolution des surcharges que si Range comporte des lignes prenant en charge le déplacement d’éléments.
Voir également insertColumns(), removeColumns(), moveColumn() et moveRows().
template <typename I, typename F> requires if_canMoveItems<F> && if_tree<I> bool QRangeModelAdapter::moveRow(QSpan<const int> source, QSpan<const int> destination)
Déplace la branche de l'arborescence située à l'adresse source vers la position indiquée à l'adresse destination, puis indique si le déplacement de la branche a réussi.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge le déplacement d'éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRow(), removeRow() et moveColumn().
template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveRow(int source, int destination)
Déplace la ligne située à l'adresse source vers l'adresse destination et indique si le déplacement de la ligne a réussi.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge le déplacement d’éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRow(), removeRow() et 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)
Déplace la branche située à l'adresse sourceRow depuis la « sourceParent » vers l'adresse destinationChild dans la « destinationParent », et indique si le déplacement de la branche a réussi.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge le déplacement d’éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRow(), removeRow() et 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)
Déplace les branches de l'arborescence « count » commençant à l'adresse source vers la position indiquée à l'adresse destination, puis indique si le déplacement des lignes s'est déroulé avec succès.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre prenant en charge le déplacement d’éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRows(), removeRows() et moveColumns().
template <typename F> requires if_canMoveItems<F> bool QRangeModelAdapter::moveRows(int source, int count, int destination)
Déplace les lignes de la table « count » commençant à l'adresse source vers l'adresse destination, puis indique si le déplacement des lignes s'est déroulé avec succès.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge le déplacement d’éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRows(), removeRows() et 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)
Déplace les branches de count commençant par sourceRow depuis le sourceParent vers l'emplacement indiqué à l'adresse destinationChild dans le destinationParent, et indique si le déplacement de la branche a réussi.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre prenant en charge le déplacement d'éléments.
Il s’agit d’une fonction surchargée.
Voir également insertRows(), removeRows() et moveColumns().
const QRangeModelAdapter<Range, Protocol, Model>::range_type &QRangeModelAdapter::range() const
Renvoie une référence constante à la plage sur laquelle porte l'adaptateur de modèle.
Voir également assign(), at() et model().
template <typename I> requires if_canRemoveColumns<I> bool QRangeModelAdapter::removeColumn(int column)
Supprime l'column on indiquée de chaque ligne et indique si la suppression a abouti.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` contient des lignes permettant la suppression d’éléments.
Voir également ` insertColumn()`, ` removeColumns()` et ` removeRow()`.
template <typename I> requires if_canRemoveColumns<I> bool QRangeModelAdapter::removeColumns(int column, int count)
Supprime de chaque ligne les colonnes de type « count » commençant par l'column spécifiée, puis indique si la suppression a abouti.
Contraintes
Ne participe à la résolution des surcharges que si Range comporte des lignes prenant en charge la suppression d’éléments.
Voir également insertColumns(), removeColumn() et removeRow().
template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRow(QSpan<const int> path)
Supprime la ligne à l'path indiquée, y compris tous ses éléments enfants, et renvoie si la suppression a abouti.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre prenant en charge la suppression d'éléments.
Il s’agit d’une fonction surchargée.
Voir également removeRows(), removeColumn() et insertRow().
template <typename I> requires if_canRemoveRows<I> bool QRangeModelAdapter::removeRow(int row)
Supprime l'row ion indiquée et indique si la suppression a abouti.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge la suppression d'éléments.
Il s'agit d'une fonction surchargée.
Voir également removeRows(), removeColumn() et insertRow().
template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRow(int row, const QModelIndex &parent)
Supprime l'row spécifiée de la table parent, y compris tous les éléments enfants de cette ligne, et indique si la suppression a réussi.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre prenant en charge la suppression d’éléments.
Il s’agit d’une fonction surchargée.
Voir également removeRows(), removeColumn() et insertRow().
template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRows(QSpan<const int> path, int count)
Supprime les lignes de la table « count » à partir de la ligne indiquée par « path », et indique si la suppression a abouti.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre prenant en charge la suppression d'éléments.
Il s’agit d’une fonction surchargée.
Voir également removeRow(), removeColumns() et insertRows().
template <typename I> requires if_canRemoveRows<I> bool QRangeModelAdapter::removeRows(int row, int count)
Supprime les lignes de la table « count » à partir de la ligne « row » et indique si la suppression a réussi.
Contraintes
Ne participe à la résolution des surcharges que si Range prend en charge la suppression d’éléments.
Il s'agit d'une fonction surchargée.
Voir également removeRow(), removeColumns() et insertRows().
template <typename I> requires if_canRemoveRows<I> && if_tree<I> bool QRangeModelAdapter::removeRows(int row, int count, const QModelIndex &parent)
Supprime les lignes « count » de la table « parent » à partir de l'row spécifiée, et indique si la suppression a réussi.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre prenant en charge la suppression d’éléments.
Il s’agit d’une fonction surchargée.
Voir également removeRow(), removeColumns() et insertRows().
int QRangeModelAdapter::rowCount() const
Renvoie le nombre de lignes. Si l'Range e représente une liste ou un tableau, il s'agit du nombre de lignes. Pour les arborescences, il s'agit du nombre de lignes de niveau supérieur.
Il s'agit d'une fonction surchargée.
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
Renvoie le nombre de lignes sous row.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre.
[since 6.12] template <typename I> requires if_tree<I> int QRangeModelAdapter::rowCount(const QModelIndex &index) const
Renvoie le nombre de lignes sous index.
Contraintes
Ne participe à la résolution des surcharges que si Range est un arbre.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans 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)
Définit la valeur de la propriété « role » de l'élément situé à l'adresse listRow sur value.
Renvoie « true » en cas de réussite ; sinon, renvoie « false ».
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est une liste modifiable.
Voir également data() et 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)
Définit les données d'role s de l'élément référencé par path et column sur value.
Renvoie true en cas de réussite ; sinon, renvoie false.
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est un arbre modifiable.
template <typename I> requires unless_list<I> && if_writable<I> bool QRangeModelAdapter::setData(int tableRow, int column, const QVariant &value, int role = Qt::EditRole)
Définit les données « role » de l'élément référencé par « tableRow » et « column » sur « value ».
Renvoie « true » en cas de réussite ; sinon, renvoie « false ».
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est mutable et n’est pas une liste.
Voir également data() et at().
[since 6.12] template <typename I> requires if_writable<I> bool QRangeModelAdapter::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
Définit la valeur de la propriété « role » de l'élément situé à l'adresse index sur value.
Renvoie true en cas de réussite ; sinon, renvoie false.
Contraintes
Ne participe à la résolution des surcharges que si Range n’est pas en lecture seule.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
Voir également data() et 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)
Remplace le contenu du modèle par les lignes contenues dans newRange, en utilisant éventuellement la sémantique de déplacement.
Cette fonction fait en sorte que la fonction « model() » émette les signaux « modelAboutToBeReset() » et « modelReset() ».
Contraintes
Ne participe à la résolution des surcharges que si ` Range ` est mutable et si ` newRange ` est d’un type pouvant être assigné à ` Range`, mais pas à ` QRangeModelAdapter`.
Voir également range(), at(), model() et 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)
Remplace le contenu du modèle par les lignes du fichier « newRange ».
Contraintes
Ne participe à la résolution des surcharges que si Range est mutable et si newRange peut être affecté à Range.
Éléments non membres associés
[noexcept] bool operator!=(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)
Indique si lhs n'est pas égal à rhs. Deux adaptateurs sont égaux s'ils contiennent tous deux la même instance de model.
[noexcept] bool operator==(const QRangeModelAdapter<Range, Protocol, Model> &lhs, const QRangeModelAdapter<Range, Protocol, Model> &rhs)
Indique si ` lhs ` est égal à ` rhs`. Deux adaptateurs sont égaux s'ils contiennent tous deux la même instance de ` 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.