Unity 8
QVariantListModel Class Reference

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

Inherits QAbstractListModel.

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
 
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 {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::QVariantListModel ( QObject *  parent = 0)
explicit

Constructs a variant list model with the given parent.

Definition at line 87 of file qvariantlistmodel.cpp.

87  :
88  QAbstractListModel(parent)
89 {
90  QHash<int, QByteArray> roles(roleNames());
91  roles[Qt::DisplayRole] = "modelData";
92  setRoleNames(roles);
93 }
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 100 of file qvariantlistmodel.cpp.

100  :
101  QAbstractListModel(parent), lst(list)
102 {
103  QHash<int, QByteArray> roles(roleNames());
104  roles[Qt::DisplayRole] = "modelData";
105  setRoleNames(roles);
106 }

Member Function Documentation

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 151 of file qvariantlistmodel.cpp.

152 {
153  if (index.row() < 0 || index.row() >= lst.size())
154  return QVariant();
155 
156  if (role == Qt::DisplayRole || role == Qt::EditRole)
157  return lst.at(index.row());
158 
159  return QVariant();
160 }
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 195 of file qvariantlistmodel.cpp.

197 {
198  if (count < 1 || row < 0 || row > rowCount(parent))
199  return false;
200 
201  beginInsertRows(QModelIndex(), row, row + count - 1);
202 
203  for (int r = 0; r < count; ++r)
204  lst.insert(row, QVariant());
205 
206  endInsertRows();
207 
208  return true;
209 }
int rowCount(const QModelIndex &parent=QModelIndex()) const override
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 222 of file qvariantlistmodel.cpp.

224 {
225  if (count <= 0 || row < 0 || (row + count) > rowCount(parent))
226  return false;
227 
228  beginRemoveRows(QModelIndex(), row, row + count - 1);
229 
230  for (int r = 0; r < count; ++r)
231  lst.removeAt(row);
232 
233  endRemoveRows();
234 
235  return true;
236 }
int rowCount(const QModelIndex &parent=QModelIndex()) const override
int QVariantListModel::rowCount ( const QModelIndex &  parent = QModelIndex()) 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 122 of file qvariantlistmodel.cpp.

123 {
124  if (parent.isValid())
125  return 0;
126 
127  return lst.count();
128 }
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 171 of file qvariantlistmodel.cpp.

173 {
174  if (index.row() >= 0 && index.row() < lst.size()
175  && (role == Qt::EditRole || role == Qt::DisplayRole))
176  {
177  lst.replace(index.row(), value);
178  dataChanged(index, index, QVector<int>() << role);
179  return true;
180  }
181  return false;
182 }
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 252 of file qvariantlistmodel.cpp.

253 {
254  int size = lst.size();
255  bool sameSize = list.size() == size;
256  if (!sameSize)
257  {
258  beginResetModel();
259  }
260  lst = list;
261  if (!sameSize)
262  {
263  endResetModel();
264  } else
265  {
266  dataChanged(QAbstractListModel::index(0),
267  QAbstractListModel::index(size - 1));
268  }
269 }
QModelIndex QVariantListModel::sibling ( int  row,
int  column,
const QModelIndex &  idx 
) const
override

Definition at line 133 of file qvariantlistmodel.cpp.

135 {
136  if (!idx.isValid() || column != 0 || row >= lst.count())
137  return QModelIndex();
138 
139  return createIndex(row, 0);
140 }
QVariantList QVariantListModel::variantList ( ) const

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

Definition at line 241 of file qvariantlistmodel.cpp.

242 {
243  return lst;
244 }

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