### Class

# Gtk ColumnView

#### Description [src]

    final class Gtk.ColumnView : Gtk.Widget {
      /* No available fields */
    }

`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 `GtkColumnView:show-row-separators` and `GtkColumnView: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 `GtkColumnView: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 gtk_column_view_get_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 gtk_column_view_column_set_sorter(). The initial sort order can be set with gtk_column_view_sort_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 `GtkColumnView:reorderable` and `GtkColumnViewColumn:resizable` 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]

`GtkColumnView` uses a single CSS node named columnview. It may carry the .column-separators style class, when `GtkColumnView: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 `GtkColumnView: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

`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.

#### Hierarchy

#### Ancestors

- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget
- GtkScrollable

#### Constructors

###### gtk_column_view_new

Creates a new `GtkColumnView`.

#### Instance methods

###### gtk_column_view_append_column

Appends the `column` to the end of the columns in `self`.

###### gtk_column_view_get_columns

Gets the list of columns in this column view.

###### gtk_column_view_get_enable_rubberband

Returns whether rows can be selected by dragging with the mouse.

###### gtk_column_view_get_model

Gets the model that’s currently used to read the items displayed.

###### gtk_column_view_get_reorderable

Returns whether columns are reorderable.

###### gtk_column_view_get_show_column_separators

Returns whether the list should show separators between columns.

###### gtk_column_view_get_show_row_separators

Returns whether the list should show separators between rows.

###### gtk_column_view_get_single_click_activate

Returns whether rows will be activated on single click and selected on hover.

###### gtk_column_view_get_sorter

Returns a special sorter that reflects the users sorting choices in the column view.

###### gtk_column_view_insert_column

Inserts a column at the given position in the columns of `self`.

###### gtk_column_view_remove_column

Removes the `column` from the list of columns of `self`.

###### gtk_column_view_set_enable_rubberband

Sets whether selections can be changed by dragging with the mouse.

###### gtk_column_view_set_model

Sets the model to use.

###### gtk_column_view_set_reorderable

Sets whether columns should be reorderable by dragging.

###### gtk_column_view_set_show_column_separators

Sets whether the list should show separators between columns.

###### gtk_column_view_set_show_row_separators

Sets whether the list should show separators between rows.

###### gtk_column_view_set_single_click_activate

Sets whether rows should be activated on single click and selected on hover.

###### gtk_column_view_sort_by_column

Sets the sorting of the view.

##### Methods inherited from GtkWidget (159)

##### Methods inherited from GtkAccessible (10)

###### gtk_accessible_get_accessible_role

Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.

###### gtk_accessible_reset_property

Resets the accessible `property` to its default value.

###### gtk_accessible_reset_relation

Resets the accessible `relation` to its default value.

###### gtk_accessible_reset_state

Resets the accessible `state` to its default value.

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states. See the `GtkAccessibleState` documentation for the value types of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

##### Methods inherited from GtkScrollable (9)

###### gtk_scrollable_get_border

Returns the size of a non-scrolling border around the outside of the scrollable.

###### gtk_scrollable_get_hadjustment

Retrieves the `GtkAdjustment` used for horizontal scrolling.

###### gtk_scrollable_get_hscroll_policy

Gets the horizontal `GtkScrollablePolicy`.

###### gtk_scrollable_get_vadjustment

Retrieves the `GtkAdjustment` used for vertical scrolling.

###### gtk_scrollable_get_vscroll_policy

Gets the vertical `GtkScrollablePolicy`.

###### gtk_scrollable_set_hadjustment

Sets the horizontal adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_hscroll_policy

Sets the `GtkScrollablePolicy`.

###### gtk_scrollable_set_vadjustment

Sets the vertical adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_vscroll_policy

Sets the `GtkScrollablePolicy`.

#### Properties

###### Gtk.ColumnView:columns

The list of columns.

###### Gtk.ColumnView:enable-rubberband

Allow rubberband selection.

###### Gtk.ColumnView:model

Model for the items displayed.

###### Gtk.ColumnView:reorderable

Whether columns are reorderable.

###### Gtk.ColumnView:show-column-separators

Show separators between columns.

###### Gtk.ColumnView:show-row-separators

Show separators between rows.

###### Gtk.ColumnView:single-click-activate

Activate rows on single click and select them on hover.

###### Gtk.ColumnView:sorter

Sorter with the sorting choices of the user.

##### Properties inherited from GtkWidget (34)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the ::query-tooltip signal on `widget`.

###### Gtk.Widget:height-request

Override for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Override for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkScrollable (4)

###### Gtk.Scrollable:hadjustment

Horizontal `GtkAdjustment` of the scrollable widget.

###### Gtk.Scrollable:hscroll-policy

Determines when horizontal scrolling should start.

###### Gtk.Scrollable:vadjustment

Vertical `GtkAdjustment` of the scrollable widget.

###### Gtk.Scrollable:vscroll-policy

Determines when vertical scrolling should start.

#### Signals

###### Gtk.ColumnView::activate

Emitted when a row has been activated by the user, usually via activating the GtkListBase|list.activate-item action.

##### Signals inherited from GtkWidget (13)

###### Gtk.Widget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### Gtk.Widget::direction-changed

Emitted when the text direction of a widget changes.

###### Gtk.Widget::hide

Emitted when `widget` is hidden.

###### Gtk.Widget::keynav-failed

Emitted if keyboard navigation fails.

###### Gtk.Widget::map

Emitted when `widget` is going to be mapped.

###### Gtk.Widget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### Gtk.Widget::move-focus

Emitted when the focus is moved.

###### Gtk.Widget::query-tooltip

Emitted when the widgets tooltip is about to be shown.

###### Gtk.Widget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### Gtk.Widget::show

Emitted when `widget` is shown.

###### Gtk.Widget::state-flags-changed

Emitted when the widget state changes.

###### Gtk.Widget::unmap

Emitted when `widget` is going to be unmapped.

###### Gtk.Widget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

#### Class structure

    struct GtkColumnViewClass {
      /* no available fields */
    }