GtkListView — A widget for displaying lists
GtkWidget * | gtk_list_view_new () |
void | gtk_list_view_set_factory () |
GtkListItemFactory * | gtk_list_view_get_factory () |
void | gtk_list_view_set_model () |
GtkSelectionModel * | gtk_list_view_get_model () |
void | gtk_list_view_set_show_separators () |
gboolean | gtk_list_view_get_show_separators () |
void | gtk_list_view_set_single_click_activate () |
gboolean | gtk_list_view_get_single_click_activate () |
void | gtk_list_view_set_enable_rubberband () |
gboolean | gtk_list_view_get_enable_rubberband () |
gboolean | enable-rubberband | Read / Write |
GtkListItemFactory * | factory | Read / Write |
GtkSelectionModel * | model | Read / Write |
gboolean | show-separators | Read / Write |
gboolean | single-click-activate | Read / Write |
void | activate | Run Last |
list.activate-item | u |
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkListBase ╰── GtkListView
GtkListView implements GtkAccessible, GtkBuildable, GtkConstraintTarget, GtkOrientable and GtkScrollable.
#include <gtk/gtk.h>
GtkListView is a widget to present a view into 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 “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 “enable-rubberband”.
If you need multiple columns with headers, see GtkColumnView.
To learn more about the list widget framework, see the overview.
An example of using GtkListView:
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);
GtkListView uses a single CSS node named listview. It may carry the .separators style class, when “show-separators” property is set. Each child widget uses a single CSS node named row. 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: .rich-list, .navigation-sidebar or .data-table.
GtkListView uses the GTK_ACCESSIBLE_ROLE_LIST role, and the list items use the GTK_ACCESSIBLE_ROLE_LIST_ITEM role.
GtkWidget * gtk_list_view_new (GtkSelectionModel *model
,GtkListItemFactory *factory
);
Creates a new GtkListView that uses the given factory
for mapping items to widgets.
The function takes ownership of the arguments, so you can write code like
list_view = gtk_list_view_new (
create_model()
,
gtk_builder_list_item_factory_new_from_resource ("/resource.ui"));
model | the model to use, or | [allow-none][transfer full] |
factory | The factory to populate items with, or | [allow-none][transfer full] |
a new GtkListView using the given model
and factory
void gtk_list_view_set_factory (GtkListView *self
,GtkListItemFactory *factory
);
Sets the GtkListItemFactory to use for populating list items.
self | ||
factory | the factory to use or | [allow-none][transfer none] |
GtkListItemFactory *
gtk_list_view_get_factory (GtkListView *self
);
Gets the factory that's currently used to populate list items.
self |
The factory in use.
[nullable][transfer none]
void gtk_list_view_set_model (GtkListView *self
,GtkSelectionModel *model
);
Sets the GtkSelectionModel to use.
self | ||
model | the model to use or | [allow-none][transfer none] |
GtkSelectionModel *
gtk_list_view_get_model (GtkListView *self
);
Gets the model that's currently used to read the items displayed.
self |
The model in use.
[nullable][transfer none]
void gtk_list_view_set_show_separators (GtkListView *self
,gboolean show_separators
);
Sets whether the list box should show separators between rows.
self | ||
show_separators |
|
gboolean
gtk_list_view_get_show_separators (GtkListView *self
);
Returns whether the list box should show separators between rows.
self |
TRUE
if the list box shows separators
void gtk_list_view_set_single_click_activate (GtkListView *self
,gboolean single_click_activate
);
Sets whether rows should be activated on single click and selected on hover.
self | ||
single_click_activate |
|
gboolean
gtk_list_view_get_single_click_activate
(GtkListView *self
);
Returns whether rows will be activated on single click and selected on hover.
self |
TRUE
if rows are activated on single click
void gtk_list_view_set_enable_rubberband (GtkListView *self
,gboolean enable_rubberband
);
Sets whether selections can be changed by dragging with the mouse.
self | ||
enable_rubberband |
|
gboolean
gtk_list_view_get_enable_rubberband (GtkListView *self
);
Returns whether rows can be selected by dragging with the mouse.
self |
TRUE
if rubberband selection is enabled
typedef struct _GtkListView GtkListView;
GtkListView is the simple list implementation for GTK's list widgets.
“enable-rubberband”
property“enable-rubberband” gboolean
Allow rubberband selection
Owner: GtkListView
Flags: Read / Write
Default value: FALSE
“factory”
property“factory” GtkListItemFactory *
Factory for populating list items
Owner: GtkListView
Flags: Read / Write
“model”
property“model” GtkSelectionModel *
Model for the items displayed
Owner: GtkListView
Flags: Read / Write
“show-separators”
property“show-separators” gboolean
Show separators between rows
Owner: GtkListView
Flags: Read / Write
Default value: FALSE
“single-click-activate”
property“single-click-activate” gboolean
Activate rows on single click and select them on hover
Owner: GtkListView
Flags: Read / Write
Default value: FALSE
“activate”
signalvoid user_function (GtkListView *self, guint position, gpointer user_data)
The ::activate signal is emitted when a row has been activated by the user, usually via activating the GtkListView|list.activate-item action.
This allows for a convenient way to handle activation in a listview. See gtk_list_item_set_activatable()
for details on how to use this signal.
self | The GtkListView | |
position | position of item to activate | |
user_data | user data set when the signal handler was connected. |
Flags: Run Last
“list.activate-item”
actionActivates the item given in position
by emitting the GtkListView::activate signal.
Parameter type: u
position | position of item to activate |
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk4/4.0/GtkListView.html