Skip to content

Model[T]

from slint import Model
python

Model is the base class for feeding dynamic data into Slint views.

Subclass Model to implement your own models, or use ListModel to wrap a list.

Models are iterable and can be used in for loops.

Bases: native.PyModelBase, Iterable[T]

set_row_data(row: int, value: T) -> None

Call this method on mutable models to change the data for the given row. The UI will also call this method when modifying a model’s data. Re-implement this method in a sub-class to handle the change.

row_count() -> int

Returns the number of rows in the model. Re-implement this method in a sub-class to provide the row count.

row_data(row: int) -> T | None

Returns the data for the given row. Re-implement this method in a sub-class to provide the data.

push_row(value: T) -> None

Add a new row to the model with the provided value. The default implementation calls insert_row with the row count.

remove_row(row: int) -> None

Remove the row at the given index. Raises an exception when the model rejects the modification. The default implementation raises NotImplementedError. A model that supports removing rows should also call notify_row_removed.

insert_row(row: int, value: T) -> None

Insert a new row at the given index. Raises an exception when the model rejects the modification. The default implementation raises NotImplementedError. A model that supports inserting rows should also call notify_row_added.

notify_row_changed(row: int) -> None

Call this method from a sub-class to notify the views that a row has changed.

notify_row_removed(row: int, count: int) -> None

Call this method from a sub-class to notify the views that count rows have been removed starting at row.

notify_row_added(row: int, count: int) -> None

Call this method from a sub-class to notify the views that count rows have been added starting at row.


© 2026 SixtyFPS GmbH