Wt  3.7.1
Public Member Functions | List of all members
Wt::WStandardItemModel Class Reference

A standard data model, which stores its data in memory. More...

#include <Wt/WStandardItemModel>

Inheritance diagram for Wt::WStandardItemModel:
Inheritance graph
[legend]

Public Member Functions

 WStandardItemModel (WObject *parent=0)
 Creates a new standard item model.
 
 WStandardItemModel (int rows, int columns, WObject *parent=0)
 Creates a new standard item model with an initial geometry. More...
 
 ~WStandardItemModel ()
 Destructor.
 
void clear ()
 Erases all data in the model. More...
 
WStandardIteminvisibleRootItem () const
 Returns the invisible root item. More...
 
WModelIndex indexFromItem (const WStandardItem *item) const
 Returns the model index for a particular item. More...
 
WStandardItemitemFromIndex (const WModelIndex &index) const
 Returns the standard item that corresponds to a model index. More...
 
void appendColumn (const std::vector< WStandardItem *> &items)
 Adds a single column of top level items. More...
 
void insertColumn (int column, const std::vector< WStandardItem *> &items)
 Inserts a single column of top level items. More...
 
void appendRow (const std::vector< WStandardItem *> &items)
 Adds a single row of top level items. More...
 
void insertRow (int row, const std::vector< WStandardItem *> &items)
 Inserts a single row of top level items. More...
 
void appendRow (WStandardItem *item)
 Appends a single row containing a single item. More...
 
void insertRow (int row, WStandardItem *item)
 Inserts a single row containing a single item. More...
 
WStandardItemitem (int row, int column=0) const
 Returns a toplevel item. More...
 
void setItem (int row, int column, WStandardItem *item)
 Sets a toplevel item. More...
 
WStandardItemitemPrototype () const
 Returns the item prototype. More...
 
void setItemPrototype (WStandardItem *item)
 Sets the item prototype. More...
 
std::vector< WStandardItem * > takeColumn (int column)
 Takes a column out of the model. More...
 
std::vector< WStandardItem * > takeRow (int row)
 Takes a row out of the model. More...
 
WStandardItemtakeItem (int row, int column=0)
 Takes an item out of the model. More...
 
void setHeaderFlags (int section, Orientation orientation, WFlags< HeaderFlag > flags)
 Sets header flags. More...
 
void setSortRole (int role)
 Set the role used to sort the model. More...
 
int sortRole () const
 Returns the role used to sort the model. More...
 
virtual void sort (int column, SortOrder order=AscendingOrder)
 Sorts the model according to a particular column. More...
 
Signal< WStandardItem * > & itemChanged ()
 Signal emitted when an item is changed. More...
 
- Public Member Functions inherited from Wt::WAbstractItemModel
 WAbstractItemModel (WObject *parent=0)
 Creates a new data model.
 
virtual int columnCount (const WModelIndex &parent=WModelIndex()) const =0
 Returns the number of columns. More...
 
virtual int rowCount (const WModelIndex &parent=WModelIndex()) const =0
 Returns the number of rows. More...
 
virtual WFlags< ItemFlagflags (const WModelIndex &index) const
 Returns the flags for an item. More...
 
virtual WFlags< HeaderFlagheaderFlags (int section, Orientation orientation=Horizontal) const
 Returns the flags for a header. More...
 
virtual bool hasChildren (const WModelIndex &index) const
 Returns if there are children at an index. More...
 
virtual WModelIndex parent (const WModelIndex &index) const =0
 Returns the parent for a model index. More...
 
virtual boost::any data (const WModelIndex &index, int role=DisplayRole) const =0
 Returns data at a specified model index for the given role. More...
 
virtual DataMap itemData (const WModelIndex &index) const
 Returns all data at a specific index. More...
 
virtual boost::any headerData (int section, Orientation orientation=Horizontal, int role=DisplayRole) const
 Returns the row or column header data. More...
 
virtual WModelIndex index (int row, int column, const WModelIndex &parent=WModelIndex()) const =0
 Returns the child index for the given row and column. More...
 
virtual WModelIndexList match (const WModelIndex &start, int role, const boost::any &value, int hits=-1, WFlags< MatchFlag > flags=WFlags< MatchFlag >(MatchStartsWith|MatchWrap)) const
 Returns an index list for data items that match. More...
 
boost::any data (int row, int column, int role=DisplayRole, const WModelIndex &parent=WModelIndex()) const
 Returns the data item at the given column and row. More...
 
virtual bool hasIndex (int row, int column, const WModelIndex &parent=WModelIndex()) const
 Returns if an index at the given position is valid (i.e. falls within the column-row bounds). More...
 
virtual bool insertColumns (int column, int count, const WModelIndex &parent=WModelIndex())
 Inserts one or more columns. More...
 
virtual bool insertRows (int row, int count, const WModelIndex &parent=WModelIndex())
 Inserts one or more rows. More...
 
virtual bool removeColumns (int column, int count, const WModelIndex &parent=WModelIndex())
 Removes columns. More...
 
virtual bool removeRows (int row, int count, const WModelIndex &parent=WModelIndex())
 Removes rows. More...
 
virtual bool setData (const WModelIndex &index, const boost::any &value, int role=EditRole)
 Sets data at the given model index. More...
 
virtual bool setItemData (const WModelIndex &index, const DataMap &values)
 Sets data at the given model index. More...
 
virtual bool setHeaderData (int section, Orientation orientation, const boost::any &value, int role=EditRole)
 Sets header data for a column or row. More...
 
bool setHeaderData (int section, const boost::any &value)
 Sets column header data. More...
 
virtual void expandColumn (int column)
 Expands a column. More...
 
virtual void collapseColumn (int column)
 Collapses a column. More...
 
virtual void * toRawIndex (const WModelIndex &index) const
 Converts a model index to a raw pointer that remains valid while the model's layout is changed. More...
 
virtual WModelIndex fromRawIndex (void *rawIndex) const
 Converts a raw pointer to a model index. More...
 
virtual std::string mimeType () const
 Returns a mime-type for dragging a set of indexes. More...
 
virtual std::vector< std::string > acceptDropMimeTypes () const
 Returns a list of mime-types that could be accepted for a drop event. More...
 
virtual void dropEvent (const WDropEvent &e, DropAction action, int row, int column, const WModelIndex &parent)
 Handles a drop event. More...
 
bool insertColumn (int column, const WModelIndex &parent=WModelIndex())
 Inserts one column. More...
 
bool insertRow (int row, const WModelIndex &parent=WModelIndex())
 Inserts one row. More...
 
bool removeColumn (int column, const WModelIndex &parent=WModelIndex())
 Removes one column. More...
 
bool removeRow (int row, const WModelIndex &parent=WModelIndex())
 Removes one row. More...
 
bool setData (int row, int column, const boost::any &value, int role=EditRole, const WModelIndex &parent=WModelIndex())
 Sets data at the given row and column. More...
 
virtual Signal< WModelIndex, int, int > & columnsAboutToBeInserted ()
 Signal emitted before a number of columns will be inserted. More...
 
virtual Signal< WModelIndex, int, int > & columnsAboutToBeRemoved ()
 Signal emitted before a number of columns will be removed. More...
 
virtual Signal< WModelIndex, int, int > & columnsInserted ()
 Signal emitted after a number of columns were inserted. More...
 
virtual Signal< WModelIndex, int, int > & columnsRemoved ()
 Signal emitted after a number of columns were removed. More...
 
virtual Signal< WModelIndex, int, int > & rowsAboutToBeInserted ()
 Signal emitted before a number of rows will be inserted. More...
 
virtual Signal< WModelIndex, int, int > & rowsAboutToBeRemoved ()
 Signal emitted before a number of rows will be removed. More...
 
virtual Signal< WModelIndex, int, int > & rowsInserted ()
 Signal emitted after a number of rows were inserted. More...
 
virtual Signal< WModelIndex, int, int > & rowsRemoved ()
 Signal emitted after a number of rows were removed. More...
 
virtual Signal< WModelIndex, WModelIndex > & dataChanged ()
 Signal emitted when some data was changed. More...
 
virtual Signal< Orientation, int, int > & headerDataChanged ()
 Signal emitted when some header data was changed. More...
 
virtual SignallayoutAboutToBeChanged ()
 Signal emitted when the layout is about to be changed. More...
 
virtual SignallayoutChanged ()
 Signal emitted when the layout is changed. More...
 
virtual SignalmodelReset ()
 Signal emitted when the model was reset. More...
 
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 Create a WObject with a given parent object. More...
 
virtual ~WObject ()
 Destructor. More...
 
virtual const std::string id () const
 Returns the (unique) identifier for this object. More...
 
virtual void setObjectName (const std::string &name)
 Sets an object name. More...
 
virtual std::string objectName () const
 Returns the object name. More...
 
void resetLearnedSlots ()
 Resets learned stateless slot implementations. More...
 
template<class T >
void resetLearnedSlot (void(T::*method)())
 Resets a learned stateless slot implementation. More...
 
template<class T >
WStatelessSlot * implementStateless (void(T::*method)())
 Declares a slot to be stateless and learn client-side behaviour on first invocation. More...
 
template<class T >
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 Declares a slot to be stateless and learn client-side behaviour in advance. More...
 
void isNotStateless ()
 Marks the current function as not stateless. More...
 
template<class T >
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 Provides a JavaScript implementation for a method. More...
 
void addChild (WObject *child)
 Adds a child object. More...
 
virtual void removeChild (WObject *child)
 Removes a child object. More...
 
const std::vector< WObject * > & children () const
 Returns the children.
 
WObjectparent () const
 Returns the parent object.
 

Additional Inherited Members

- Public Types inherited from Wt::WAbstractItemModel
typedef std::map< int, boost::any > DataMap
 Data map. More...
 
- Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
 Typedef for a WObject method without arguments.
 
- Protected Member Functions inherited from Wt::WAbstractItemModel
void reset ()
 Resets the model and invalidate any data. More...
 
WModelIndex createIndex (int row, int column, void *ptr) const
 Creates a model index for the given row and column. More...
 
WModelIndex createIndex (int row, int column, ::uint64_t id) const
 Creates a model index for the given row and column. More...
 
void beginInsertColumns (const WModelIndex &parent, int first, int last)
 Method to be called before inserting columns. More...
 
void beginInsertRows (const WModelIndex &parent, int first, int last)
 Method to be called before inserting rows. More...
 
void beginRemoveColumns (const WModelIndex &parent, int first, int last)
 Method to be called before removing columns. More...
 
void beginRemoveRows (const WModelIndex &parent, int first, int last)
 Method to be called before removing rows. More...
 
void endInsertColumns ()
 Method to be called after inserting columns. More...
 
void endInsertRows ()
 Method to be called after inserting rows. More...
 
void endRemoveColumns ()
 Method to be called after removing columns. More...
 
void endRemoveRows ()
 Method to be called after removing rows. More...
 
- Protected Member Functions inherited from Wt::WObject
virtual WStatelessSlot * getStateless (Method method)
 On-demand stateless slot implementation. More...
 
- Static Protected Member Functions inherited from Wt::WObject
static WObjectsender ()
 Returns the sender of the current slot call. More...
 

Detailed Description

A standard data model, which stores its data in memory.

The standard item model supports all features of WAbstractItemModel, and can thus be used to represent tables, trees and tree tables.

The data itself are organized in WStandardItem objects. There is one invisible root object (invisibleRootItem()) that holds the toplevel data. Most methods in this class that access or manipulate data internally operate on this root item.

If you want to use the model as a table, then you can use WStandardItemModel(int, int, WObject *) to set the initial table size, and use the item() and setItem() methods to set data. You can change the geometry by inserting rows (insertRow()) or columns (insertColumn()) or removing rows (removeRow()) or columns (removeColumn()).

If you want to use the model as a tree (or tree table), then you can use the default constructor to start with an empty tree, and use the WStandardItem API on invisibleRootItem() to manipulate the tree root. When you are building a tree, the column count at each node is 1. When you are building a tree table, you can add additional columns of data for each internal node. Only the items in the first column have children that result in a hierarchical tree structure.

When using the model with a view class, you can use the itemFromIndex() and indexFromItem() models to translate between model indexes (that are used by the view class) and standard items.

Usage example for tabular data:

int rows = 5;
int columns = 4;
Wt::WStandardItemModel *model = new Wt::WStandardItemModel(rows, columns, this);
for (int row = 0; row < rows; ++row) {
for (int column = 0; column < columns; ++column) {
item->setText("Item " + boost::lexical_cast<std::string>(row)
+ ", " + boost::lexical_cast<std::string>(column));
model->setItem(row, column, item);
}
}

Usage example for tree-like data:

int topLevelRows = 5;
int secondLevelRows = 7;
for (int row = 0; row < topLevelRows; ++row) {
topLevel->setText("Item " + boost::lexical_cast<std::string>(row));
for (int row2 = 0; row2 < secondLevelRows; ++row2) {
item->setText("Item " + boost::lexical_cast<std::string>(row)
+ ": " + boost::lexical_cast<std::string>(row2));
topLevel->appendRow(item);
}
root->appendRow(topLevel);
}

Constructor & Destructor Documentation

◆ WStandardItemModel()

Wt::WStandardItemModel::WStandardItemModel ( int  rows,
int  columns,
WObject parent = 0 
)

Creates a new standard item model with an initial geometry.

Creates a standard item model with a geometry of rows x columns. All items are set to 0.

Member Function Documentation

◆ appendColumn()

void Wt::WStandardItemModel::appendColumn ( const std::vector< WStandardItem *> &  items)

Adds a single column of top level items.

Appends a single column of top level items. If necessary, the row count is increased.

Equivalent to:

See also
insertColumn(), appendRow()

◆ appendRow() [1/2]

void Wt::WStandardItemModel::appendRow ( const std::vector< WStandardItem *> &  items)

Adds a single row of top level items.

Appends a single row of top level items. If necessary, the column count is increased.

Equivalent to:

insertRow(rowCount(), items);
See also
insertRow(), appendColumn()

◆ appendRow() [2/2]

void Wt::WStandardItemModel::appendRow ( WStandardItem item)

Appends a single row containing a single item.

Appends a single toplevel row, with a single item.

Equivalent to:

See also
WStandardItem::insertRow(int, WStandardItem *)

◆ clear()

void Wt::WStandardItemModel::clear ( )

Erases all data in the model.

After clearing the model, rowCount() and columnCount() are 0.

◆ indexFromItem()

WModelIndex Wt::WStandardItemModel::indexFromItem ( const WStandardItem item) const

Returns the model index for a particular item.

If the item is the invisibleRootItem(), then an invalid index is returned.

See also
itemFromIndex()

◆ insertColumn()

void Wt::WStandardItemModel::insertColumn ( int  column,
const std::vector< WStandardItem *> &  items 
)

Inserts a single column of top level items.

Inserts a single column of top level items at column column. If necessary, the row count is increased.

Equivalent to:

invisibleRootItem()->insertColumn(column, items);
See also
WStandardItem::insertColumn()

◆ insertRow() [1/2]

void Wt::WStandardItemModel::insertRow ( int  row,
const std::vector< WStandardItem *> &  items 
)

Inserts a single row of top level items.

Inserts a single row of top level items at row row. If necessary, the column count is increased.

Equivalent to:

See also
WStandardItem::insertRow()

◆ insertRow() [2/2]

void Wt::WStandardItemModel::insertRow ( int  row,
WStandardItem item 
)

Inserts a single row containing a single item.

Inserts a single toplevel row, with a single item.

Equivalent to:

See also
WStandardItem::insertRow(int, WStandardItem *)

◆ invisibleRootItem()

WStandardItem* Wt::WStandardItemModel::invisibleRootItem ( ) const

Returns the invisible root item.

The invisible root item is a special item that is not rendered itself, but holds the top level data.

◆ item()

WStandardItem* Wt::WStandardItemModel::item ( int  row,
int  column = 0 
) const

Returns a toplevel item.

Returns the top level at at (row, column). This may be 0 if no item was set previously at that position, or if the indicated position is out of bounds.

Equivalent to:

invisibleRootItem()->child(row, column);
See also
WStandardItem::child()

◆ itemChanged()

Signal<WStandardItem *>& Wt::WStandardItemModel::itemChanged ( )

Signal emitted when an item is changed.

This signal is emitted whenever data for an item has changed. The item that has changed is passed as the first parameter.

See also
WStandardItem::setData()

◆ itemFromIndex()

WStandardItem* Wt::WStandardItemModel::itemFromIndex ( const WModelIndex index) const

Returns the standard item that corresponds to a model index.

If the index is an invalid index, then the invisibleRootItem() is returned.

See also
indexFromItem()

◆ itemPrototype()

WStandardItem* Wt::WStandardItemModel::itemPrototype ( ) const

Returns the item prototype.

See also
setItemPrototype()

◆ setHeaderFlags()

void Wt::WStandardItemModel::setHeaderFlags ( int  section,
Orientation  orientation,
WFlags< HeaderFlag flags 
)

Sets header flags.

By default, no flags are set.

◆ setItem()

void Wt::WStandardItemModel::setItem ( int  row,
int  column,
WStandardItem item 
)

Sets a toplevel item.

Sets the top level at at (row, column). If necessary, the number of rows or columns is increased.

If an item was previously set for that position, it is deleted first.

Equivalent to:

invisibleRootItem()->setChild(row, column, item);
See also
WStandardItem::setChild(int, int, WStandardItem *item)

◆ setItemPrototype()

void Wt::WStandardItemModel::setItemPrototype ( WStandardItem item)

Sets the item prototype.

Set the item that is cloned when an item needs to be created because the model is manipulated through its WAbstractItemModel API. For example, this may be needed when a view sets data at a position for which no item was previously set and thus created.

The new item is created based on this prototype by using WStandardItem::clone().

The default prototype is WStandardItem().

See also
setItemPrototype()

◆ setSortRole()

void Wt::WStandardItemModel::setSortRole ( int  role)

Set the role used to sort the model.

The default role is DisplayRole.

See also
sort().

◆ sort()

virtual void Wt::WStandardItemModel::sort ( int  column,
SortOrder  order = AscendingOrder 
)
virtual

Sorts the model according to a particular column.

If the model supports sorting, then it should emit the layoutAboutToBeChanged() signal, rearrange its items, and afterwards emit the layoutChanged() signal.

See also
layoutAboutToBeChanged(), layoutChanged()

Reimplemented from Wt::WAbstractItemModel.

◆ sortRole()

int Wt::WStandardItemModel::sortRole ( ) const

Returns the role used to sort the model.

See also
setSortRole()

◆ takeColumn()

std::vector<WStandardItem *> Wt::WStandardItemModel::takeColumn ( int  column)

Takes a column out of the model.

Removes a column from the model, and returns the items that it contained. Ownership of the items is transferred out of the model.

Equivalent to:

See also
WStandardItem::takeColumn(), WStandardItem::takeRow()

◆ takeItem()

WStandardItem* Wt::WStandardItemModel::takeItem ( int  row,
int  column = 0 
)

Takes an item out of the model.

Removes an item from the model, and returns it. Ownership of the item is transferred out of the model.

Equivalent to:

invisibleRootItem()->takeItem(row, column);
See also
takeItem(), WStandardItem::takeRow(), WStandardItem::takeColumn()

◆ takeRow()

std::vector<WStandardItem *> Wt::WStandardItemModel::takeRow ( int  row)

Takes a row out of the model.

Removes a row from the model, and returns the items that it contained. Ownership of the items is transferred out of the model.

Equivalent to:

See also
WStandardItem::takeRow(), takeColumn()

Generated on Tue Dec 15 2020 for the C++ Web Toolkit (Wt) by doxygen 1.8.13