`GtkColumnView` presents a large dynamic list of items using multiple columns with headers.
`GtkColumnView` uses the factories of its columns to generate a cell widget for each column, for each visible item and displays them
together as the row for this item.
The [[email protected]:show-row-separators] and [[email protected]:show-column-separators] properties offer a simple way to
display separators between the rows or columns.
`GtkColumnView` 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 [[email protected]:enable-rubberband].
The column view supports sorting that can be customized by the user by clicking on column headers. To set this up, the `GtkSorter`
returned by [[email protected]_sorter] must be attached to a sort model for the data that the view is showing, and the columns
must have sorters attached to them by calling [[email protected]_sorter]. The initial sort order can be set with [
[email protected]_by_column].
The column view also supports interactive resizing and reordering of columns, via Drag-and-Drop of the column headers. This can be
enabled or disabled with the [[email protected]:reorderable] and [[email protected]:resizable] properties.
To learn more about the list widget framework, see the [overview](section-list-widget.html).
CSS nodes
``` columnview.column-separators.navigation-sidebar ├── header │ ├── <column header> ┊ ┊ │
╰── <column header> │ ├── listview │ ┊ ╰── [rubberband] ```
`GtkColumnView` uses a single CSS node named columnview. It may carry the .column-separators style class, when [
[email protected]:show-column-separators] property is set. Header widgets appear below a node with name header. The rows are
contained in a `GtkListView` widget, so there is a listview node with the same structure as for a standalone `GtkListView` widget. If [
[email protected]:show-row-separators] is set, it will be passed on to the list view, causing its CSS node to carry the .separators
style class. For rubberband selection, a node with name rubberband is used.
The main columnview node may also carry style classes to select the style of [list presentation](section-list-widget.html#list-styles):
.rich-list, .navigation-sidebar or .data-table.
Accessibility
`GtkColumnView` uses the gtk_accessible_role_tree_grid role, header title widgets are using the
gtk_accessible_role_column_header role. The row widgets are using the
gtk_accessible_role_row role, and individual cells are using the gtk_accessible_role_grid_cell
role