QHeaderView

The QHeaderView class provides a header row or header column for item views. More

Inheritance diagram of PySide2.QtWidgets.QHeaderView

Synopsis

Functions

Virtual functions

Slots

Signals

Detailed Description

A QHeaderView displays the headers used in item views such as the QTableView and QTreeView classes. It takes the place of Qt3’s QHeader class previously used for the same purpose, but uses the Qt’s model/view architecture for consistency with the item view classes.

The QHeaderView class is one of the Model/View Classes and is part of Qt’s model/view framework .

The header gets the data for each section from the model using the headerData() function. You can set the data by using setHeaderData() .

Each header has an orientation() and a number of sections, given by the count() function. A section refers to a part of the header - either a row or a column, depending on the orientation.

Sections can be moved and resized using moveSection() and resizeSection() ; they can also be hidden and shown with hideSection() and showSection() .

Each section of a header is described by a section ID, specified by its section(), and can be located at a particular visualIndex() in the header. A section can have a sort indicator set with setSortIndicator() ; this indicates whether the items in the associated item view will be sorted in the order given by the section.

For a horizontal header the section is equivalent to a column in the model, and for a vertical header the section is equivalent to a row in the model.

Moving Header Sections

A header can be fixed in place, or made movable with setSectionsMovable() . It can be made clickable with setSectionsClickable() , and has resizing behavior in accordance with setSectionResizeMode() .

Note

Double-clicking on a header to resize a section only applies for visible rows.

A header will emit sectionMoved() if the user moves a section, sectionResized() if the user resizes a section, and sectionClicked() as well as sectionHandleDoubleClicked() in response to mouse clicks. A header will also emit sectionCountChanged() .

You can identify a section using the logicalIndex() and logicalIndexAt() functions, or by its index position, using the visualIndex() and visualIndexAt() functions. The visual index will change if a section is moved, but the logical index will not change.

Appearance

QTableWidget and QTableView create default headers. If you want the headers to be visible, you can use setVisible() .

Not all ItemDataRole s will have an effect on a QHeaderView . If you need to draw other roles, you can subclass QHeaderView and reimplement paintEvent() . QHeaderView respects the following item data roles, unless they are in conflict with the style (which can happen for styles that follow the desktop theme):

TextAlignmentRole , DisplayRole , FontRole , DecorationRole , ForegroundRole , and BackgroundRole .

Note

Each header renders the data for each section itself, and does not rely on a delegate. As a result, calling a header’s setItemDelegate() function will have no effect.

class QHeaderView(orientation[, parent=None])
param parent

QWidget

param orientation

Orientation

Creates a new generic header with the given orientation and parent .

PySide2.QtWidgets.QHeaderView.ResizeMode

The resize mode specifies the behavior of the header sections. It can be set on the entire header view or on individual sections using setSectionResizeMode() .

Constant

Description

QHeaderView.Interactive

The user can resize the section. The section can also be resized programmatically using resizeSection() . The section size defaults to defaultSectionSize . (See also cascadingSectionResizes .)

QHeaderView.Fixed

The user cannot resize the section. The section can only be resized programmatically using resizeSection() . The section size defaults to defaultSectionSize .

QHeaderView.Stretch

QHeaderView will automatically resize the section to fill the available space. The size cannot be changed by the user or programmatically.

QHeaderView.ResizeToContents

QHeaderView will automatically resize the section to its optimal size based on the contents of the entire column or row. The size cannot be changed by the user or programmatically. (This value was introduced in 4.2)

The following values are obsolete:

Constant

Description

QHeaderView.Custom

Use Fixed instead.

PySide2.QtWidgets.QHeaderView.cascadingSectionResizes()
Return type

bool

PySide2.QtWidgets.QHeaderView.count()
Return type

int

Returns the number of sections in the header.

PySide2.QtWidgets.QHeaderView.defaultAlignment()
Return type

Alignment

PySide2.QtWidgets.QHeaderView.defaultSectionSize()
Return type

int

PySide2.QtWidgets.QHeaderView.geometriesChanged()
PySide2.QtWidgets.QHeaderView.headerDataChanged(orientation, logicalFirst, logicalLast)
Parameters
  • orientationOrientation

  • logicalFirstint

  • logicalLastint

Updates the changed header sections with the given orientation , from logicalFirst to logicalLast inclusive.

PySide2.QtWidgets.QHeaderView.hiddenSectionCount()
Return type

int

Returns the number of sections in the header that has been hidden.

PySide2.QtWidgets.QHeaderView.hideSection(logicalIndex)
Parameters

logicalIndexint

Hides the section specified by logicalIndex .

PySide2.QtWidgets.QHeaderView.highlightSections()
Return type

bool

PySide2.QtWidgets.QHeaderView.initStyleOption(option)
Parameters

optionQStyleOptionHeader

Initialize option with the values from this QHeaderView . This method is useful for subclasses when they need a QStyleOptionHeader , but do not want to fill in all the information themselves.

See also

initFrom()

PySide2.QtWidgets.QHeaderView.initialize()
PySide2.QtWidgets.QHeaderView.initializeSections()
PySide2.QtWidgets.QHeaderView.initializeSections(start, end)
Parameters
  • startint

  • endint

PySide2.QtWidgets.QHeaderView.isFirstSectionMovable()
Return type

bool

PySide2.QtWidgets.QHeaderView.isSectionHidden(logicalIndex)
Parameters

logicalIndexint

Return type

bool

Returns true if the section specified by logicalIndex is explicitly hidden from the user; otherwise returns false .

PySide2.QtWidgets.QHeaderView.isSortIndicatorShown()
Return type

bool

PySide2.QtWidgets.QHeaderView.length()
Return type

int

Returns the length along the orientation of the header.

See also

sizeHint() setSectionResizeMode() offset()

PySide2.QtWidgets.QHeaderView.logicalIndex(visualIndex)
Parameters

visualIndexint

Return type

int

Returns the for the section at the given visualIndex position, or -1 if visualIndex < 0 or visualIndex >= count() .

Note that the visualIndex is not affected by hidden sections.

PySide2.QtWidgets.QHeaderView.logicalIndexAt(pos)
Parameters

posQPoint

Return type

int

PySide2.QtWidgets.QHeaderView.logicalIndexAt(position)
Parameters

positionint

Return type

int

Returns the section that covers the given position in the viewport.

PySide2.QtWidgets.QHeaderView.logicalIndexAt(x, y)
Parameters
  • xint

  • yint

Return type

int

Returns the logical index of the section at the given coordinate. If the header is horizontal x will be used, otherwise y will be used to find the logical index.

PySide2.QtWidgets.QHeaderView.maximumSectionSize()
Return type

int

PySide2.QtWidgets.QHeaderView.minimumSectionSize()
Return type

int

PySide2.QtWidgets.QHeaderView.moveSection(from, to)
Parameters
  • fromint

  • toint

Moves the section at visual index from to occupy visual index to .

See also

sectionsMoved()

PySide2.QtWidgets.QHeaderView.offset()
Return type

int

Returns the offset of the header: this is the header’s left-most (or top-most for vertical headers) visible pixel.

See also

setOffset()

PySide2.QtWidgets.QHeaderView.orientation()
Return type

Orientation

Returns the orientation of the header.

See also

Orientation

PySide2.QtWidgets.QHeaderView.paintSection(painter, rect, logicalIndex)
Parameters
  • painterQPainter

  • rectQRect

  • logicalIndexint

Paints the section specified by the given logicalIndex , using the given painter and rect .

Normally, you do not have to call this function.

PySide2.QtWidgets.QHeaderView.resetDefaultSectionSize()
PySide2.QtWidgets.QHeaderView.resizeContentsPrecision()
Return type

int

Returns how precise QHeaderView will calculate on ResizeToContents .

PySide2.QtWidgets.QHeaderView.resizeSection(logicalIndex, size)
Parameters
  • logicalIndexint

  • sizeint

Resizes the section specified by logicalIndex to size measured in pixels. The size parameter must be a value larger or equal to zero. A size equal to zero is however not recommended. In that situation hideSection should be used instead.

PySide2.QtWidgets.QHeaderView.resizeSections()

Resizes the sections according to their size hints. Normally, you do not have to call this function.

PySide2.QtWidgets.QHeaderView.resizeSections(mode)
Parameters

modeResizeMode

Resizes the sections according to the given mode , ignoring the current resize mode.

See also

sectionResized()

PySide2.QtWidgets.QHeaderView.restoreState(state)
Parameters

stateQByteArray

Return type

bool

Restores the state of this header view. This function returns true if the state was restored; otherwise returns false.

See also

saveState()

PySide2.QtWidgets.QHeaderView.saveState()
Return type

QByteArray

Saves the current state of this header view.

To restore the saved state, pass the return value to restoreState() .

See also

restoreState()

PySide2.QtWidgets.QHeaderView.sectionClicked(logicalIndex)
Parameters

logicalIndexint

PySide2.QtWidgets.QHeaderView.sectionCountChanged(oldCount, newCount)
Parameters
  • oldCountint

  • newCountint

PySide2.QtWidgets.QHeaderView.sectionDoubleClicked(logicalIndex)
Parameters

logicalIndexint

PySide2.QtWidgets.QHeaderView.sectionEntered(logicalIndex)
Parameters

logicalIndexint

PySide2.QtWidgets.QHeaderView.sectionHandleDoubleClicked(logicalIndex)
Parameters

logicalIndexint

PySide2.QtWidgets.QHeaderView.sectionMoved(logicalIndex, oldVisualIndex, newVisualIndex)
Parameters
  • logicalIndexint

  • oldVisualIndexint

  • newVisualIndexint

PySide2.QtWidgets.QHeaderView.sectionPosition(logicalIndex)
Parameters

logicalIndexint

Return type

int

Returns the section position of the given logicalIndex , or -1 if the section is hidden. The position is measured in pixels from the first visible item’s top-left corner to the top-left corner of the item with logicalIndex . The measurement is along the x-axis for horizontal headers and along the y-axis for vertical headers.

PySide2.QtWidgets.QHeaderView.sectionPressed(logicalIndex)
Parameters

logicalIndexint

PySide2.QtWidgets.QHeaderView.sectionResizeMode(logicalIndex)
Parameters

logicalIndexint

Return type

ResizeMode

Returns the resize mode that applies to the section specified by the given logicalIndex .

PySide2.QtWidgets.QHeaderView.sectionResized(logicalIndex, oldSize, newSize)
Parameters
  • logicalIndexint

  • oldSizeint

  • newSizeint

PySide2.QtWidgets.QHeaderView.sectionSize(logicalIndex)
Parameters

logicalIndexint

Return type

int

Returns the width (or height for vertical headers) of the given logicalIndex .

PySide2.QtWidgets.QHeaderView.sectionSizeFromContents(logicalIndex)
Parameters

logicalIndexint

Return type

QSize

Returns the size of the contents of the section specified by the given logicalIndex .

PySide2.QtWidgets.QHeaderView.sectionSizeHint(logicalIndex)
Parameters

logicalIndexint

Return type

int

Returns a suitable size hint for the section specified by logicalIndex .

SizeHintRole

PySide2.QtWidgets.QHeaderView.sectionViewportPosition(logicalIndex)
Parameters

logicalIndexint

Return type

int

Returns the section viewport position of the given logicalIndex .

If the section is hidden, the return value is undefined.

PySide2.QtWidgets.QHeaderView.sectionsAboutToBeRemoved(parent, logicalFirst, logicalLast)
Parameters
  • parentQModelIndex

  • logicalFirstint

  • logicalLastint

This slot is called when sections are removed from the parent . logicalFirst and logicalLast signify where the sections were removed.

If only one section is removed, logicalFirst and logicalLast will be the same.

PySide2.QtWidgets.QHeaderView.sectionsClickable()
Return type

bool

Returns true if the header is clickable; otherwise returns false . A clickable header could be set up to allow the user to change the representation of the data in the view related to the header.

PySide2.QtWidgets.QHeaderView.sectionsHidden()
Return type

bool

Returns true if sections in the header has been hidden; otherwise returns false;

PySide2.QtWidgets.QHeaderView.sectionsInserted(parent, logicalFirst, logicalLast)
Parameters
  • parentQModelIndex

  • logicalFirstint

  • logicalLastint

This slot is called when sections are inserted into the parent . logicalFirst and logicalLast indices signify where the new sections were inserted.

If only one section is inserted, logicalFirst and logicalLast will be the same.

PySide2.QtWidgets.QHeaderView.sectionsMovable()
Return type

bool

Returns true if the header can be moved by the user; otherwise returns false.

By default, sections are movable in QTreeView (except for the first one), and not movable in QTableView .

PySide2.QtWidgets.QHeaderView.sectionsMoved()
Return type

bool

Returns true if sections in the header has been moved; otherwise returns false;

See also

moveSection()

PySide2.QtWidgets.QHeaderView.setCascadingSectionResizes(enable)
Parameters

enablebool

PySide2.QtWidgets.QHeaderView.setDefaultAlignment(alignment)
Parameters

alignmentAlignment

PySide2.QtWidgets.QHeaderView.setDefaultSectionSize(size)
Parameters

sizeint

PySide2.QtWidgets.QHeaderView.setFirstSectionMovable(movable)
Parameters

movablebool

PySide2.QtWidgets.QHeaderView.setHighlightSections(highlight)
Parameters

highlightbool

PySide2.QtWidgets.QHeaderView.setMaximumSectionSize(size)
Parameters

sizeint

PySide2.QtWidgets.QHeaderView.setMinimumSectionSize(size)
Parameters

sizeint

PySide2.QtWidgets.QHeaderView.setOffset(offset)
Parameters

offsetint

Sets the header’s offset to offset .

See also

offset() length()

PySide2.QtWidgets.QHeaderView.setOffsetToLastSection()

Sets the offset to make the last section visible.

PySide2.QtWidgets.QHeaderView.setOffsetToSectionPosition(visualIndex)
Parameters

visualIndexint

Sets the offset to the start of the section at the given visualSectionNumber . visualSectionNumber is the actual visible section when hiddenSections are not considered. That is not always the same as visualIndex() .

PySide2.QtWidgets.QHeaderView.setResizeContentsPrecision(precision)
Parameters

precisionint

Sets how precise QHeaderView should calculate the size when ResizeToContents is used. A low value will provide a less accurate but fast auto resize while a higher value will provide a more accurate resize that however can be slow.

The number precision specifies how many sections that should be consider when calculating the preferred size.

The default value is 1000 meaning that a horizontal column with auto-resize will look at maximum 1000 rows on calculating when doing an auto resize.

Special value 0 means that it will look at only the visible area. Special value -1 will imply looking at all elements.

This value is used in sizeHintForColumn() , sizeHintForRow() and sizeHintForColumn() . Reimplementing these functions can make this function not having an effect.

See also

resizeContentsPrecision() setSectionResizeMode() resizeSections() sizeHintForColumn() sizeHintForRow() sizeHintForColumn()

PySide2.QtWidgets.QHeaderView.setSectionHidden(logicalIndex, hide)
Parameters
  • logicalIndexint

  • hidebool

If hide is true the section specified by logicalIndex is hidden; otherwise the section is shown.

PySide2.QtWidgets.QHeaderView.setSectionResizeMode(mode)
Parameters

modeResizeMode

Sets the constraints on how the header can be resized to those described by the given mode .

PySide2.QtWidgets.QHeaderView.setSectionResizeMode(logicalIndex, mode)
Parameters

Sets the constraints on how the section specified by logicalIndex in the header can be resized to those described by the given mode . The logical index should exist at the time this function is called.

Note

This setting will be ignored for the last section if the stretchLastSection property is set to true. This is the default for the horizontal headers provided by QTreeView .

PySide2.QtWidgets.QHeaderView.setSectionsClickable(clickable)
Parameters

clickablebool

If clickable is true, the header will respond to single clicks.

PySide2.QtWidgets.QHeaderView.setSectionsMovable(movable)
Parameters

movablebool

If movable is true, the header sections may be moved by the user; otherwise they are fixed in place.

When used in combination with QTreeView , the first column is not movable (since it contains the tree structure), by default. You can make it movable with setFirstSectionMovable (true).

PySide2.QtWidgets.QHeaderView.setSortIndicator(logicalIndex, order)
Parameters
  • logicalIndexint

  • orderSortOrder

Sets the sort indicator for the section specified by the given logicalIndex in the direction specified by order , and removes the sort indicator from any other section that was showing it.

logicalIndex may be -1, in which case no sort indicator will be shown and the model will return to its natural, unsorted order. Note that not all models support this and may even crash in this case.

PySide2.QtWidgets.QHeaderView.setSortIndicatorShown(show)
Parameters

showbool

PySide2.QtWidgets.QHeaderView.setStretchLastSection(stretch)
Parameters

stretchbool

PySide2.QtWidgets.QHeaderView.showSection(logicalIndex)
Parameters

logicalIndexint

Shows the section specified by logicalIndex .

PySide2.QtWidgets.QHeaderView.sortIndicatorChanged(logicalIndex, order)
Parameters
  • logicalIndexint

  • orderSortOrder

PySide2.QtWidgets.QHeaderView.sortIndicatorOrder()
Return type

SortOrder

Returns the order for the sort indicator. If no section has a sort indicator the return value of this function is undefined.

PySide2.QtWidgets.QHeaderView.sortIndicatorSection()
Return type

int

Returns the logical index of the section that has a sort indicator. By default this is section 0.

PySide2.QtWidgets.QHeaderView.stretchLastSection()
Return type

bool

PySide2.QtWidgets.QHeaderView.stretchSectionCount()
Return type

int

Returns the number of sections that are set to resize mode stretch. In views, this can be used to see if the headerview needs to resize the sections when the view’s geometry changes.

PySide2.QtWidgets.QHeaderView.swapSections(first, second)
Parameters
  • firstint

  • secondint

Swaps the section at visual index first with the section at visual index second .

See also

moveSection()

PySide2.QtWidgets.QHeaderView.updateSection(logicalIndex)
Parameters

logicalIndexint

Updates the section specified by the given logicalIndex .

PySide2.QtWidgets.QHeaderView.visualIndex(logicalIndex)
Parameters

logicalIndexint

Return type

int

Returns the visual index position of the section specified by the given logicalIndex , or -1 otherwise.

Hidden sections still have valid visual indexes.

See also

logicalIndex()

PySide2.QtWidgets.QHeaderView.visualIndexAt(position)
Parameters

positionint

Return type

int

Returns the visual index of the section that covers the given position in the viewport.

See also

logicalIndexAt()