Wt: Model/view system

Wt 4.10.4

Loading...
Searching...
No Matches
Classes | Enumerations | Functions
Model/view system

Classes that implement Wt's model/view system. More...

## Classes
struct | Wt::any_traits< Type >
| A traits class for a type stored in a cpp17::any. More...
class | Wt::ItemDataRole
| Enumeration that indicates a role for a data item. More...
class | Wt::Chart::WAbstractChart
| Abstract base class for MVC-based charts. More...
class | Wt::Chart::WCartesianChart
| A cartesian chart. More...
class | Wt::Chart::WPieChart
| A pie chart. More...
class | Wt::Dbo::QueryModel< Result >
| A Wt MVC Model to view/edit query results. More...
class | Wt::WAbstractItemDelegate
| Abstract delegate class for rendering an item in an item view. More...
class | Wt::WAbstractItemModel
| An abstract model for use with Wt's view classes. More...
class | Wt::WAbstractItemView
| An abstract base class for item Views. More...
class | Wt::WAbstractListModel
| An abstract list model for use with Wt's view classes. More...
class | Wt::WAbstractProxyModel
| An abstract proxy model for Wt's item models. More...
class | Wt::WAbstractTableModel
| An abstract table model for use with Wt's view classes. More...
class | Wt::WAggregateProxyModel
| A proxy model for Wt's item models that provides column aggregation. More...
class | Wt::WBatchEditProxyModel
| A proxy model for Wt's item models that provides batch editing. More...
class | Wt::WComboBox
| A widget that provides a drop-down combo-box control. More...
class | Wt::WItemDelegate
| Standard delegate class for rendering a view item. More...
class | Wt::WItemSelectionModel
| A class that represents a selection for a WAbstractItemView. More...
class | Wt::WModelIndex
| A value class that describes an index to an item in a data model. More...
class | Wt::WReadOnlyProxyModel
| A read-only wrapper for a source model. More...
class | Wt::WSelectionBox
| A selection box allows selection from a list of options. More...
class | Wt::WSortFilterProxyModel
| A proxy model for Wt's item models that provides filtering and/or sorting. More...
class | Wt::WStandardItem
| An item in a WStandardItemModel. More...
class | Wt::WStandardItemModel
| A standard data model, which stores its data in memory. More...
class | Wt::WStringListModel
| An model that manages a list of strings. More...
class | Wt::WSuggestionPopup
| A widget which popups to assist in editing a textarea or lineedit. More...
class | Wt::WTableView
| An MVC View widget for tabular data. More...
class | Wt::WTreeView
| A view class that displays a model as a tree or tree table. More...

## Enumerations
enum class | Wt::MatchFlag { Wt::MatchFlag::Exactly = 0x0 , Wt::MatchFlag::StringExactly = 0x1 , Wt::MatchFlag::StartsWith = 0x2 , Wt::MatchFlag::EndsWith = 0x3 , Wt::MatchFlag::RegExp = 0x4 , Wt::MatchFlag::WildCard = 0x5 , Wt::MatchFlag::CaseSensitive = 0x10 , Wt::MatchFlag::Wrap = 0x20 }
| Flags that specify how to match two values. More...
enum class | Wt::HeaderFlag { Wt::HeaderFlag::ColumnIsCollapsed = 0x1 , Wt::HeaderFlag::ColumnIsExpandedLeft = 0x2 , Wt::HeaderFlag::ColumnIsExpandedRight = 0x4 , Wt::HeaderFlag::UserCheckable = 0x8 , Wt::HeaderFlag::Tristate = 0x10 , Wt::HeaderFlag::XHTMLText = 0x40 }
| Flags that indicate table header options. More...
enum class | Wt::ItemFlag { Wt::ItemFlag::Selectable = 0x1 , Wt::ItemFlag::Editable = 0x2 , Wt::ItemFlag::UserCheckable = 0x4 , Wt::ItemFlag::DragEnabled = 0x8 , Wt::ItemFlag::DropEnabled = 0x10 , Wt::ItemFlag::Tristate = 0x20 , Wt::ItemFlag::XHTMLText = 0x40 , Wt::ItemFlag::Dirty = 0x80 , Wt::ItemFlag::DeferredToolTip = 0x100 }
| Flags that indicate data item options. More...
enum class | Wt::SortOrder { Wt::SortOrder::Ascending , Wt::SortOrder::Descending }
| Enumeration that indicates a sort order. More...
enum class | Wt::DropAction { Wt::DropAction::Copy = 0x1 , Wt::DropAction::Move = 0x2 }
| Enumeration that indicates a drop action. More...

## Functions
WString | Wt::asString (const cpp17::any &v, const WString &formatString=WString())
| Interprets a cpp17::any as a string value.
double | Wt::asNumber (const cpp17::any &v)
| Interprets a cpp17::any as a number value.
template<typename Type >
void | Wt::registerType ()
| Registers MVC-support for a type passed in a cpp17::any.

## Detailed Description

Classes that implement Wt's model/view system.

## 1. Models

The library provides support for tabular, tree-like and tree-table like models. All of these implement WAbstractItemModel.

### Concrete model implementations

The following concrete model implementations are provided:

- Wt::WStandardItemModel: a full general purpose model, which stores data in memory.
- Wt::WStringListModel: a low-height single column model, useful for simple list views
- Wt::Dbo::QueryModel: a database query backed model

### Proxy model implementations

Proxy models are helper models which wrap around another model, to provide additional functionality on top of the existing model. The following propy models:

- Wt::WSortFilterProxyModel: provides sorting and filtering support
- Wt::WAggregateProxyModel: provides column aggregation (useful only for views that implement column aggregation such as WAbstractItemView's).

### Abstract models

Abstract models cannot be instantiated as such, but are the base point for custom model implementations:

- Wt::WAbstractItemModel: abstract base class of all models
- Wt::WAbstractTableModel: abstract base class for tabular models
- Wt::WAbstractProxyModel: abstract base class for proxy models.

## 2. Views

### Item-based views

- WComboBox: a combo box
- WSelectionBox: a selection box
- WTableView: a table view (with editing support)
- WTreeView: a tree(-table) view (with editing support)
- WSuggestionPopup: an intelligent input-driven combo box

### Graphical views

- Chart::WCartesianChart: 2D cartesian chart
- Chart::WPieChart: pie charts

## 3. Helper classes

### Model indexes

WModelIndex represents an index to an item of a WAbstractItemModel, identified by a row, column and parent node.

### Item delegates

Item delegates are used by WTableView and WTreeView to render a single item and to provide editing support.

The abstract base class is WAbstractItemDelegate, and a default implementation is provided by WItemDelegate.

## Enumeration Type Documentation

## ◆ DropAction

enum class Wt::DropAction
| strong

Enumeration that indicates a drop action.

See also
  WAbstractItemModel::dropEvent()

Enumerator
Copy | Copy the selection.
Move | Move the selection (deleting originals)

## ◆ HeaderFlag

enum class Wt::HeaderFlag
| strong

Flags that indicate table header options.

See also
  WAbstractItemModel::headerFlags()

Enumerator
ColumnIsCollapsed | Flag that indicates that the column can be expanded. See also WAbstractItemModel::expandColumn()
ColumnIsExpandedLeft | Flag that indicates that the column was expanded to the left. See also WAbstractItemModel::collapseColumn()
ColumnIsExpandedRight | Flag that indicates that the column was expanded to the right. See also WAbstractItemModel::collapseColumn()
UserCheckable | Flag that indicates that the header can be checked.
Tristate | Flag that indicates that the item has three states. When set, Wt::ItemDataRole::Checked data is of type Wt::CheckState
XHTMLText | Flag that indicates that the item text (ItemDataRole::Display, ItemDataRole::ToolTip) is HTML.

## ◆ ItemFlag

enum class Wt::ItemFlag
| strong

Flags that indicate data item options.

See also
  WModelIndex::flags()

Enumerator
Selectable | Item can be selected.
Editable | Item can be edited.
UserCheckable | Item can be checked (checkbox is enabled)
DragEnabled | Item can be dragged.
DropEnabled | Item can be a drop target.
Tristate | Item has tree states. When set, Wt::ItemDataRole::Checked data is of type Wt::CheckState
XHTMLText | Item's text (ItemDataRole::Display, ItemDataRole::ToolTip) is HTML.
Dirty | Item's value has been modified.
DeferredToolTip | Item's tooltip is deferred.

## ◆ MatchFlag

enum class Wt::MatchFlag
| strong

Flags that specify how to match two values.

Except when MatchFlag::Exactly, the lexical matching is done (by comparing string representations of the value with the query). This is by default case insensitive, unless MatchFlag::CaseSensitive is OR'ed.

Enumerator
Exactly | Same type and value.
StringExactly | Lexical match.
StartsWith | Match start with query.
EndsWith | Match end with query.
RegExp | Regular expression match.
WildCard | Wildcard match.
CaseSensitive | Case sensitive.
Wrap | Wrap around whole model.

## ◆ SortOrder

enum class Wt::SortOrder
| strong

Enumeration that indicates a sort order.

Enumerator
Ascending | Ascending sort order.
Descending | Descending sort order.

## Function Documentation

## ◆ asNumber()

double Wt::asNumber | ( | const cpp17::any & | v | ) |
| extern

Interprets a cpp17::any as a number value.

The conversion works as follows:

- A cpp17::any without a value, or a string that does not represent a number, is converted to a NaN.
- A string is lexically casted to a double
- Data of type WDate is converted to an integer number using WDate::toJulianDay().
- Data of type WDateTime is converted to an integer number using WDateTime::toTime_t().
- Data of type WTime is converted to an integer number as the number of milliseconds since midnight.

Other types are converted according to Wt::any_traits<Type>::asNumber(). For these other types, you need to register their support first using Wt::registerType<Type>() and you may want to specialize Wt::any_traits<Type> for a custom handling of their conversions.

See also
  asString(), any_traits

## ◆ asString()

WString Wt::asString | ( | const cpp17::any & | v,
|  | const WString & | formatString = WString() )
| extern

Interprets a cpp17::any as a string value.

The conversion works as follows:

- A cpp17::any without a value is converted to an empty string
- Number values (integers and doubles) are formatted using the format string with snprintf(), or with std::stod() if the format string is empty.
- Data of type WDate is converted with WDate::toString() using the indicated format string. If the format string is empty, WLocalce::currentLocale().dateFormat() is assumed.
- Data of type WTime is converted with WTime::toString() using the indicated format string. If the format string is emtpy, WLocale::currentLocale().timeFormat() is assumed.
- Data of type WDateTime is converted with WDateTime::toString() using the indicated format string. If the format string is empty, WLocale::currentLocale().dateTimeFormat() is assumed.

Other types are converted according to Wt::any_traits<Type>::asString(). For these other types, you need to register their support first using Wt::registerType<Type>() and you may want to specialize Wt::any_traits<Type> for a custom handling of their conversions.

See also
  asNumber(), any_traits

## ◆ registerType()

template<typename Type >

void Wt::registerType | ( |  | ) |

Registers MVC-support for a type passed in a cpp17::any.

By registering a type using this method, the global function Wt::asString(), which converts a cpp17::any to a string, will know how to interpret a cpp17::any holding a value of type `Type` using Wt::any_traits<Type>::asString(). This gives Wt's built-in standard View classes the ability to display Wt::ItemDataRole::Display data of a Wt::WAbstractItemModel model.

Similarly, Wt::asNumber() uses Wt::any_traits<Type>::asNumber() for use by Wt::Chart::WCartesianChart and Wt::Chart::WPieChart as numerical data.

The default implementation of Wt::any_traits<Type> converts a value `t` to a Wt::WString by using std::ostream<<, expecting a UTF-8 string. This conversion thus relies on the std::ostream<< operator to be overloaded for the type. You may want to specialize Wt::any_traits to provide a custom conversion for a type, or if you want to take into account the format string.

The following types are registered by Wt itself:

- strings of type WString or std::string
- WDate, WTime, WDateTime
- standard C++ numeric types (int, double, etc...)
- bool

This method is thread-safe, and it is not an error to register the same type multiple times.