Loading...
Searching...
No Matches
QVariantListModel Class Reference

The QVariantListModel class provides a model that supplies variants to views. More...

## Public Member Functions

| QVariantListModel (QObject *parent=0)
| QVariantListModel (const QVariantList &list, QObject *parent=0)
int | rowCount (const QModelIndex &parent=QModelIndex()) const override
QModelIndex | sibling (int row, int column, const QModelIndex &idx) const override
QVariant | data (const QModelIndex &index, int role) const override
bool | setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
bool | insertRows (int row, int count, const QModelIndex &parent=QModelIndex()) override
bool | removeRows (int row, int count, const QModelIndex &parent=QModelIndex()) override
QHash< int, QByteArray > | roleNames () const override
QVariantList | variantList () const
void | setVariantList (const QVariantList &list)

## Detailed Description

The QVariantListModel class provides a model that supplies variants to views.

QVariantListModel is an editable model that can be used for simple cases where you need to display a number of variants in a view.

The model provides all the standard functions of an editable model, representing the data in the variant list as a model with one column and a number of rows equal to the number of items in the list.

Model indexes corresponding to items are obtained with the \l{QAbstractListModel::index()}{index()} function. Item data is read with the data() function and written with setData(). The number of rows (and number of items in the variant list) can be found with the rowCount() function.

The model can be constructed with an existing variant list, or variants can be set later with the setVariantList() convenience function. Variants can also be inserted in the usual way with the insertRows() function, and removed with removeRows(). The contents of the variant list can be retrieved with the variantList() convenience function.

See also
  QAbstractListModel, QAbstractItemModel, {Model Classes}

Definition at line 48 of file qvariantlistmodel.h.

## Constructor & Destructor Documentation

## QVariantListModel() [1/2]

QVariantListModel::QVariantListModel | ( | QObject * | parent = 0 | ) |

explicit

Constructs a variant list model with the given parent.

Definition at line 87 of file qvariantlistmodel.cpp.

:
QAbstractListModel(parent)
{
this->roles = QAbstractListModel::roleNames();
this->roles[Qt::DisplayRole] = "modelData";
}

## QVariantListModel() [2/2]

QVariantListModel::QVariantListModel | ( | const QVariantList & | list,
|  | QObject * | parent = 0 )

explicit

Constructs a variant list model containing the specified list with the given parent.

Definition at line 99 of file qvariantlistmodel.cpp.

:
QAbstractListModel(parent), lst(list)
{
this->roles = QAbstractListModel::roleNames();
this->roles[Qt::DisplayRole] = "modelData";
}

## ~QVariantListModel()

QVariantListModel::~QVariantListModel | ( |  | ) |

Definition at line 106 of file qvariantlistmodel.cpp.

{
}

## Member Function Documentation

## data()

QVariant QVariantListModel::data | ( | const QModelIndex & | index,
|  | int | role ) const

override

Returns data for the specified role, from the item with the given index.

If the view requests an invalid index, an invalid variant is returned.

See also
  setData()

Definition at line 154 of file qvariantlistmodel.cpp.

{
if (index.row() < 0 || index.row() >= lst.size())
return QVariant();
if (role == Qt::DisplayRole || role == Qt::EditRole)
return lst.at(index.row());
return QVariant();
}

## insertRows()

bool QVariantListModel::insertRows | ( | int | row,
|  | int | count,
|  | const QModelIndex & | parent = QModelIndex() )

override

Inserts count rows into the model, beginning at the given row.

The parent index of the rows is optional and is only used for consistency with QAbstractItemModel. By default, a null index is specified, indicating that the rows are inserted in the top level of the model.

See also
  QAbstractItemModel::insertRows()

Definition at line 198 of file qvariantlistmodel.cpp.

{
if (count < 1 || row < 0 || row > rowCount(parent))
return false;
beginInsertRows(QModelIndex(), row, row + count - 1);
for (int r = 0; r < count; ++r)
lst.insert(row, QVariant());
endInsertRows();
return true;
}

## removeRows()

bool QVariantListModel::removeRows | ( | int | row,
|  | int | count,
|  | const QModelIndex & | parent = QModelIndex() )

override

Removes count rows from the model, beginning at the given row.

The parent index of the rows is optional and is only used for consistency with QAbstractItemModel. By default, a null index is specified, indicating that the rows are removed in the top level of the model.

See also
  QAbstractItemModel::removeRows()

Definition at line 225 of file qvariantlistmodel.cpp.

{
if (count <= 0 || row < 0 || (row + count) > rowCount(parent))
return false;
beginRemoveRows(QModelIndex(), row, row + count - 1);
for (int r = 0; r < count; ++r)
lst.removeAt(row);
endRemoveRows();
return true;
}

## roleNames()

QHash< int, QByteArray > QVariantListModel::roleNames | ( |  | ) | const

override

Returns the number of rows in the model. This value corresponds to the number of items in the model's internal variant list.

The optional parent argument is in most models used to specify the parent of the rows to be counted. Because this is a list if a valid parent is specified, the result will always be 0.

See also
  insertRows(), removeRows(), QAbstractItemModel::rowCount()

Definition at line 120 of file qvariantlistmodel.cpp.

{
return this->roles;
}

## rowCount()

int QVariantListModel::rowCount | ( | const QModelIndex & | parent = QModelIndex() | ) | const

override

Definition at line 125 of file qvariantlistmodel.cpp.

{
if (parent.isValid())
return 0;
return lst.count();
}

## setData()

bool QVariantListModel::setData | ( | const QModelIndex & | index,
|  | const QVariant & | value,
|  | int | role = Qt::EditRole )

override

Sets the data for the specified role in the item with the given index in the model, to the provided value.

The dataChanged() signal is emitted if the item is changed.

See also
  Qt::ItemDataRole, data()

Definition at line 174 of file qvariantlistmodel.cpp.

{
if (index.row() >= 0 && index.row() < lst.size()
&& (role == Qt::EditRole || role == Qt::DisplayRole))
{
lst.replace(index.row(), value);
dataChanged(index, index, QVector<int>() << role);
return true;
}
return false;
}

## setVariantList()

void QVariantListModel::setVariantList | ( | const QVariantList & | list | ) |

Sets the model's internal variant list to list. The model will notify any attached views that its underlying data has changed.

See also
  dataChanged()

Definition at line 255 of file qvariantlistmodel.cpp.

{
int size = lst.size();
bool sameSize = list.size() == size;
if (!sameSize)
{
beginResetModel();
}
lst = list;
if (!sameSize)
{
endResetModel();
} else
{
dataChanged(QAbstractListModel::index(0),
QAbstractListModel::index(size - 1));
}
}

## sibling()

QModelIndex QVariantListModel::sibling | ( | int | row,
|  | int | column,
|  | const QModelIndex & | idx ) const

override

\reimp

Definition at line 136 of file qvariantlistmodel.cpp.

{
if (!idx.isValid() || column != 0 || row >= lst.count())
return QModelIndex();
return createIndex(row, 0);
}

## variantList()

QVariantList QVariantListModel::variantList | ( |  | ) | const

Returns the variant list used by the model to store data.

Definition at line 244 of file qvariantlistmodel.cpp.

{
return lst;
}

The documentation for this class was generated from the following files:

- plugins/Utils/qvariantlistmodel.h
- plugins/Utils/qvariantlistmodel.cpp