GtkColumnView

gtk.column_view.ColumnView presents a large dynamic list of items using multiple columns with headers.

gtk.column_view.ColumnView 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 property@Gtk.ColumnView:show-row-separators and property@Gtk.ColumnView:show-column-separators properties offer a simple way to display separators between the rows or columns.

gtk.column_view.ColumnView 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.ColumnView:enable-rubberband.

The column view supports sorting that can be customized by the user by clicking on column headers. To set this up, the gtk.sorter.Sorter returned by gtk.column_view.ColumnView.getSorter 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 gtk.column_view_column.ColumnViewColumn.setSorter. The initial sort order can be set with gtk.column_view.ColumnView.sortByColumn.

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 gtk.column_view.ColumnView.gboolean and gtk.column_view_column.ColumnViewColumn.gboolean properties.

To learn more about the list widget framework, see the overview.

CSS nodes

columnview[.column-separators][.rich-list][.navigation-sidebar][.data-table]
├── header
│   ├── <column header>
┊   ┊
│   ╰── <column header>
│
├── listview
│
┊
╰── [rubberband]

gtk.column_view.ColumnView uses a single CSS node named columnview. It may carry the .column-separators style class, when property@Gtk.ColumnView:show-column-separators property is set. Header widgets appear below a node with name header. The rows are contained in a gtk.list_view.ListView widget, so there is a listview node with the same structure as for a standalone gtk.list_view.ListView widget. If property@Gtk.ColumnView: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: .rich-list, .navigation-sidebar or .data-table.

Accessibility

gtk.column_view.ColumnView uses the gtk.types.AccessibleRole.TreeGrid role, header title widgets are using the gtk.types.AccessibleRole.ColumnHeader role. The row widgets are using the gtk.types.AccessibleRole.Row role, and individual cells are using the gtk.types.AccessibleRole.GridCell role

struct GtkColumnView