config::ui::ConfigTreeView

The settings table: a QTreeView that paints a section row across every column.

Declared in src/libs/libconfigui/configui/ConfigTreeView.hpp
Inherits QTreeView

Detailed description

The view never calls setFirstColumnSpanned(). Qt stores each span as a persistent index, a proxy removal makes it invalid, and Qt never removes an invalid one until a reset, so one span per section per filter pass would grow without a limit. drawRow() paints a section row across the whole width instead (config-ui §CFGV-6).

uniformRowHeights is set: without it QTreeView finds a row by a linear walk. The view never calls setRowHidden() and never calls expandRecursively(), which store a persistent index per row.

A change to a row the table does not show is not passed to QTreeView. QTreeView finds a changed row by a walk of its laid-out rows (QTreeViewPrivate::viewIndex), so an import that changes K settings far from the screen costs K walks of N rows. The row paints its new value when it scrolls in. This is the path config-ui §CFGT-4 names, and testConfigViewScale holds it.

A Custom cell is a persistent editor while its row is visible, and is closed when the row scrolls away (config-ui §CFGV-5d). Qt walks every open editor on each scroll, so the cost of a scroll follows the visible rows, not the schema.