Wt: Wt::WAbstractItemDelegate Class Reference

Wt 4.10.4

Loading...
Searching...
No Matches
Public Member Functions | List of all members
Wt::WAbstractItemDelegate Class Referenceabstract
Model/view system

Abstract delegate class for rendering an item in an item view. More...

`#include <Wt/WAbstractItemDelegate.h>`

Inheritance diagram for Wt::WAbstractItemDelegate:
[legend]

## Public Member Functions
| WAbstractItemDelegate ()
| Constructor.
virtual | ~WAbstractItemDelegate ()
| Destructor.
virtual std::unique_ptr< WWidget > | update (WWidget *widget, const WModelIndex &index, WFlags< ViewItemRenderFlag > flags)=0
| Creates or updates a widget that renders an item.
virtual void | updateModelIndex (WWidget *widget, const WModelIndex &index)
| Updates the model index of a widget.
virtual cpp17::any | editState (WWidget *widget, const WModelIndex &index) const
| Returns the current edit state.
virtual void | setEditState (WWidget *widget, const WModelIndex &index, const cpp17::any &value) const
| Sets the editor data from the editor state.
virtual ValidationState | validate (const WModelIndex &index, const cpp17::any &editState) const
| Returns whether the edited value is valid.
virtual void | setModelData (const cpp17::any &editState, WAbstractItemModel *model, const WModelIndex &index) const
| Saves the edited data to the model.
Signal< WWidget *, bool > & | closeEditor ()
| Signal which indicates that an editor needs to be closed.
const Signal< WWidget *, bool > & | closeEditor () const
| Signal which indicates that an editor needs to be closed.
Public Member Functions inherited from Wt::WObject
void | addChild (std::unique_ptr< WObject > child)
| Add a child WObject whose lifetime is determined by this WObject.
template<typename Child >
Child * | addChild (std::unique_ptr< Child > child)
| Add a child WObject, returning a raw pointer.
std::unique_ptr< WObject > | removeChild (WObject *child)
| Remove a child WObject, so its lifetime is no longer determined by this WObject.
template<typename Child >
std::unique_ptr< Child > | removeChild (Child *child)
| Remove a child WObject, so its lifetime is no longer determined by this WObject.
virtual const std::string | id () const
| Returns the (unique) identifier for this object.
virtual void | setObjectName (const std::string &name)
| Sets an object name.
virtual std::string | objectName () const
| Returns the object name.
void | resetLearnedSlots ()
| Resets learned stateless slot implementations.
template<class T >
void | resetLearnedSlot (void(T::*method)())
| Resets a learned stateless slot implementation.
template<class T >
WStatelessSlot * | implementStateless (void(T::*method)())
| Declares a slot to be stateless and learn client-side behaviour on first invocation.
template<class T >
WStatelessSlot * | implementStateless (void(T::*method)(), void(T::*undoMethod)())
| Declares a slot to be stateless and learn client-side behaviour in advance.
void | isNotStateless ()
| Marks the current function as not stateless.
template<class T >
WStatelessSlot * | implementJavaScript (void(T::*method)(), const std::string &jsCode)
| Provides a JavaScript implementation for a method.
Public Member Functions inherited from Wt::Core::observable
| observable () noexcept
| Default constructor.
virtual | ~observable ()
| Destructor.
template<typename... Args, typename C >
auto | bindSafe (void(C::*method)(Args...)) noexcept
| Protects a method call against object destruction.
template<typename... Args, typename C >
auto | bindSafe (void(C::*method)(Args...) const) const noexcept
| Protects a const method call against object destruction.
template<typename Function >
auto | bindSafe (const Function &function) noexcept
| Protects a function against object destruction.

## Additional Inherited Members
Public Types inherited from Wt::WObject
typedef void(WObject::*) | Method()
| Typedef for a WObject method without arguments.
Static Public Member Functions inherited from Wt::WObject
Protected Member Functions inherited from Wt::WObject
virtual WStatelessSlot * | getStateless (Method method)
| On-demand stateless slot implementation.

## Detailed Description

Abstract delegate class for rendering an item in an item view.

Rendering of an item in a WAbstractItemView is delegated to an implementation of this delegate class. The default implementation used by Wt's item views is WItemDelegate. To provide specialized rendering support, you can reimplement this class (or specialize WItemDelegate).

As a delegate is used for rendering multiple items, the class should not keep state about one specific item.

A delegate may provide editing support by instantiating an editor when update() is called with the Wt::ViewItemRenderFlag::Editing flag. In that case, you will also need to implement editState() and setEditState() to support virtual scrolling and setModelData() to save the edited value to the model. For an example, see the WItemDelegate.

See also
  WAbstractItemView::setItemDelegateForColumn()

## Member Function Documentation

## ◆ closeEditor() [1/2]

Signal< WWidget *, bool > & Wt::WAbstractItemDelegate::closeEditor | ( |  | ) |

Signal which indicates that an editor needs to be closed.

The delegate should emit this signal when it decides for itself that it should be closed (e.g. because the user confirmed the edited value or cancelled the editing). The View will then rerender the item if needed.

The second boolean argument passed to the signal is a flag which indicates whether the editor feels that the value should be saved or cancelled.

See also
  WAbstractItemView::closeEditor()

## ◆ closeEditor() [2/2]

const Signal< WWidget *, bool > & Wt::WAbstractItemDelegate::closeEditor | ( |  | ) | const

Signal which indicates that an editor needs to be closed.

See also
  closeEditor()

## ◆ editState()

virtual cpp17::any Wt::WAbstractItemDelegate::editState | ( | WWidget * | widget,
|  | const WModelIndex & | index ) const
| virtual

Returns the current edit state.

Because a View may support virtual scrolling in combination with editing, it may happen that the view decides to delete the editor widget while the user is editing. To allow to reconstruct the editor in its original state, the View will therefore ask for the editor to serialize its state in a boost::any.

When the view decides to close an editor and save its value back to the model, he will first call editState() and then setModelData().

The default implementation assumes a read-only delegate, and returns a boost::any().

See also
  setEditState(), setModelData()

Reimplemented in Wt::WItemDelegate.

## ◆ setEditState()

virtual void Wt::WAbstractItemDelegate::setEditState | ( | WWidget * | widget,
|  | const WModelIndex & | index,
|  | const cpp17::any & | value ) const
| virtual

Sets the editor data from the editor state.

When the View scrolls back into view an item that was being edited, he will use setEditState() to allow the editor to restore its current editor state.

The default implementation assumes a read-only delegate and does nothing.

See also
  editState()

Reimplemented in Wt::WItemDelegate.

## ◆ setModelData()

virtual void Wt::WAbstractItemDelegate::setModelData | ( | const cpp17::any & | editState,
|  | WAbstractItemModel * | model,
|  | const WModelIndex & | index ) const
| virtual

Saves the edited data to the model.

The View will use this method to save the edited value to the model. The `editState` is first fetched from the editor using editState().

The default implementation assumes a read-only delegate does nothing.

Reimplemented in Wt::WItemDelegate.

## ◆ update()

virtual std::unique_ptr< WWidget > Wt::WAbstractItemDelegate::update | ( | WWidget * | widget,
|  | const WModelIndex & | index,
|  | WFlags< ViewItemRenderFlag > | flags )
| pure virtual

Creates or updates a widget that renders an item.

The item is specified by its model `index`, which also indicates the model. If an existing widget already renders the item, but needs to be updated, it is passed as the `widget` parameter.

When `widget` is `nullptr`, a new widget needs to be created and returned.

If you want to replace the `widget` with a new one, return the new widget. The old `widget` will be removed. Return `nullptr` if you do not want to replace the `widget`.

You can remove the `widget` from its parent for reuse with WWidget::removeFromParent().

The returned widget should be a widget that responds properly to be given a height, width and style class. In practice, that means it cannot have a border or margin, and thus cannot be a WFormWidget since those widgets typically have built-in borders and margins. If you want to return a form widget (for editing the item), you should wrap it in a container widget.

The `flags` parameter indicates options for rendering the item.

Implemented in Wt::WItemDelegate.

## ◆ updateModelIndex()

virtual void Wt::WAbstractItemDelegate::updateModelIndex | ( | WWidget * | widget,
|  | const WModelIndex & | index )
| virtual

Updates the model index of a widget.

This method is invoked by the view when due to row/column insertions or removals, the index has shifted.

You should reimplement this method only if you are storing the model index in the `widget`, to update the stored model index.

The default implementation does nothing.

Reimplemented in Wt::WItemDelegate.

## ◆ validate()

virtual ValidationState Wt::WAbstractItemDelegate::validate | ( | const WModelIndex & | index,
|  | const cpp17::any & | editState ) const
| virtual

Returns whether the edited value is valid.

The default implementation does nothing and returns Valid.

See also
  WValidator::validate()