ListView


Object Hierarchy:

Gtk.ListView Gtk.ListView Gtk.ListView Gtk.ListBase Gtk.ListBase Gtk.ListBase->Gtk.ListView Gtk.Widget Gtk.Widget Gtk.Widget->Gtk.ListBase GLib.InitiallyUnowned GLib.InitiallyUnowned GLib.InitiallyUnowned->Gtk.Widget GLib.Object GLib.Object GLib.Object->GLib.InitiallyUnowned Gtk.Accessible Gtk.Accessible Gtk.Accessible->Gtk.ListView Gtk.Accessible->Gtk.ListBase Gtk.Accessible->Gtk.Widget Gtk.Buildable Gtk.Buildable Gtk.Buildable->Gtk.ListView Gtk.Buildable->Gtk.ListBase Gtk.Buildable->Gtk.Widget Gtk.ConstraintTarget Gtk.ConstraintTarget Gtk.ConstraintTarget->Gtk.ListView Gtk.ConstraintTarget->Gtk.ListBase Gtk.ConstraintTarget->Gtk.Widget Gtk.Orientable Gtk.Orientable Gtk.Orientable->Gtk.ListView Gtk.Orientable->Gtk.ListBase Gtk.Scrollable Gtk.Scrollable Gtk.Scrollable->Gtk.ListView Gtk.Scrollable->Gtk.ListBase

Description:

[ CCode ( type_id = "gtk_list_view_get_type ()" ) ]
public sealed class ListView : ListBase, Accessible, Buildable, ConstraintTarget, Orientable, Scrollable

`GtkListView` presents a large dynamic list of items.

`GtkListView` uses its factory to generate one row widget for each visible item and shows them in a linear display, either vertically or horizontally.

The [property@Gtk.ListView:show-separators] property offers a simple way to display separators between the rows.

`GtkListView` allows the user to select items according to the selection characteristics of the model. For models that allow multiple selected items, it is possible to turn on _rubberband selection_, using [property@Gtk.ListView:enable-rubberband].

If you need multiple columns with headers, see [class@Gtk.ColumnView].

To learn more about the list widget framework, see the [overview](section-list-widget.html).

An example of using `GtkListView`: ```c static void setup_listitem_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *image;

image = gtk_image_new (); gtk_image_set_icon_size (GTK_IMAGE (image), GTK_ICON_SIZE_LARGE); gtk_list_item_set_child (list_item, image); }

static void bind_listitem_cb (GtkListItemFactory *factory, GtkListItem *list_item) { GtkWidget *image; GAppInfo *app_info;

image = gtk_list_item_get_child (list_item); app_info = gtk_list_item_get_item (list_item); gtk_image_set_from_gicon (GTK_IMAGE (image), g_app_info_get_icon (app_info)); }

static void activate_cb (GtkListView *list, guint position, gpointer unused) { GAppInfo *app_info;

app_info = g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (list)), position); g_app_info_launch (app_info, NULL, NULL, NULL); g_object_unref (app_info); }

...

model = create_application_list ();

factory = gtk_signal_list_item_factory_new (); g_signal_connect (factory, "setup", G_CALLBACK (setup_listitem_cb), NULL); g_signal_connect ( factory, "bind", G_CALLBACK (bind_listitem_cb), NULL);

list = gtk_list_view_new (GTK_SELECTION_MODEL (gtk_single_selection_new (model)), factory);

g_signal_connect (list, "activate", G_CALLBACK (activate_cb), NULL);

gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), list); ```

CSS nodes

``` listview.separators.navigation-sidebar ├── row[.activatable] │ ├── row[.activatable] │ ┊ ╰── [ rubberband] ```

`GtkListView` uses a single CSS node named `listview`. It may carry the `.separators` style class, when [property@Gtk.ListView:show-separators] property is set. Each child widget uses a single CSS node named `row`. If the [property@Gtk.ListItem:activatable] property is set, the corresponding row will have the `.activatable` style class. For rubberband selection, a node with name `rubberband` is used.

The main listview node may also carry style classes to select the style of [list presentation](ListContainers.html#list-styles): .rich-list, .navigation-sidebar or .data-table.

Accessibility

`GtkListView` uses the gtk_accessible_role_list role, and the list items use the gtk_accessible_role_list_item role.


Namespace: Gtk
Package: gtk4

Content:

Properties:

Creation methods:

Methods:

Signals:

Inherited Members:

All known members inherited from class Gtk.Widget
All known members inherited from interface Gtk.Orientable