头部视图QHeaderView
QHeaderView类为项目视图提供标题行或标题列
from PySide6.QtWidgets import QHeaderView
QHeaderView(orientation: PySide6.QtCore.Qt.Orientation, parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)-> None
QHeaderView官方描述
QHeaderView显示项目视图(如QTableView和QTreeView类)中使用的标题。它取代了以前用于相同目的的Qt3的QHeader类,但使用了Qt的模型/视图体系结构以与项目视图类保持一致。
QHeaderView类是模型/视图类之一,也是Qt模型/视图框架的一部分。
表头使用headerData()函数从模型中获取每个部分的数据。您可以使用setHeaderData()设置数据。
每个标头都有一个orientation()和一些由count()函数给定的部分。节是指页眉的一部分,可以是一行,也可以是一列,具体取决于方向。
可以使用moveSection()和resizeSection()移动节并调整节的大小;它们也可以用hideSection()和showSection()隐藏和显示。
标头的每个部分都由其section()指定的部分ID描述,并且可以位于标头中的特定visualIndex()处。一个节可以有一个使用setSortIndicator()设置的排序指示符;这指示关联项目视图中的项目是否将按照该部分给出的顺序进行排序。
对于水平页眉,节相当于模型中的一列,对于垂直页眉,节等同于模型中一行。
移动页眉部分
收割台可以固定到位,也可以使用setSectionsMovable()移动。它可以通过setSectionsClickable()进行点击,并具有根据setSectionResizeMode()调整大小的行为。
双击标题以调整节的大小仅适用于可见行。
如果用户移动节,则标头将发出sectionMoved(),如果用户调整节的大小,则标头会发出sectionResized(),以及响应鼠标单击而发出sectionClicked()和sectionHandleDoubleClicked(()。标头还会发出sectionCountChanged()。
您可以使用logicalIndex()和logicalIndexAt()函数识别一个节,也可以使用visualIndex(。如果一个节被移动,视觉索引将发生变化,但逻辑索引不会发生变化。
外观
QTableWidget和QTableView创建默认标头。如果希望标头可见,可以使用setVisible()。
并非所有ItemDataRole都会对QHeaderView产生影响。如果您需要绘制其他角色,可以将QHeaderView子类化并重新实现paintEvent()。QHeaderView尊重以下项目数据角色,除非它们与样式冲突(对于遵循桌面主题的样式可能会发生这种情况):
TextAlignmentRole、DisplayRole、FontRole、DecorationRole、ForegroundRole和BackgroundRole。
每个标头为每个节本身呈现数据,并且不依赖于委托。因此,调用标头的setItemDelegate()函数将无效。
QHeaderView属性
属性 | 描述 | 功能访问 |
---|---|---|
cascadingSectionResizes: bool | 此属性用于确定当用户调整大小的部分达到其最小大小时,是否将交互式调整大小级联到以下部分。 此属性仅影响将"交互式"作为其调整大小模式的剖面。 默认值为false。 | cascadingSectionResizes () setCascadingSectionResizes (enable) |
defaultAlignment: Alignment | 此属性保留每个页眉部分中文本的默认对齐方式。 | defaultAlignment () setDefaultAlignment (alignment) |
defaultSectionSize: int | 此属性在调整大小之前保留标题部分的默认大小。。 此特性仅影响将"交互式"或"固定"作为其调整大小模式的剖面。 默认情况下,此属性的值取决于样式。因此,当样式发生变化时,此属性会随之更新。调用setDefaultSectionSize()会停止更新,调用resetDefaultSectionSize()会恢复默认行为。 | defaultSectionSize () setDefaultSectionSize (size) resetDefaultSectionSize () |
firstSectionMovable: bool | 此属性包含用户是否可以移动第一列。 此属性控制用户是否可以移动第一列。在QTreeView中,第一列包含树结构,因此默认情况下是不可移动的,即使在设置SectionsMovable(true)之后也是如此。 通过调用此方法,它可以再次移动,例如在没有树结构的平面列表的情况下。在这种情况下,建议也调用setRootIsDecorated(false)。 除非同时调用setSectionsMovable(true),否则将其设置为true将无效。 | isFirstSectionMovable () setFirstSectionMovable (movable) |
highlightSections: bool | 此属性保留是否高亮显示包含选定项目的节。 默认情况下,此属性为false。 | highlightSections () setHighlightSections (highlight) |
maximumSectionSize: int | 此属性包含标头部分的最大大小。。 最大节大小是允许的最大节大小。此属性的默认值为1048575,这也是截面的最大可能大小。将最大值设置为-1会将该值重置为最大节大小。 除拉伸外,所有调整大小模式都使用此属性 | maximumSectionSize () setMaximumSectionSize (size) |
minimumSectionSize: int | 此属性包含标头部分的最小大小。。 最小截面尺寸是允许的最小截面尺寸。如果最小节大小设置为-1,QHeaderView将使用字体度量大小。 所有调整大小模式都使用此属性。 | minimumSectionSize () setMinimumSectionSize (size) |
showSortIndicator: bool | 此属性保存是否显示排序指示符。 默认情况下,此属性为false。 | isSortIndicatorShown () setSortIndicatorShown (show) |
sortIndicatorClearable: bool | 此属性包含是否可以通过多次单击某个节来清除排序指示符。 此属性控制用户是否能够通过多次单击给定节来删除该节上的排序指示符。通常,单击一个部分只需更改该部分的排序顺序。通过将此属性设置为true,排序指示器将在交替上升和下降后被清除;这通常会恢复模型的原始排序。 将此属性设置为true无效,除非sectionsClickCable()也是true(这是某些视图的默认值,例如QTableView,或者在使视图可排序时自动设置,例如通过调用setSortingEnabled)。 | isSortIndicatorClearable () setSortIndicatorClearable (clearable) Signal sortIndicatorClearableChanged (clearable) |
stretchLastSection: bool | 此属性保留标头中最后一个可见的部分是否占用所有可用空间。 默认值为false。 QTreeView提供的水平标头配置时将此属性设置为true,以确保视图不会浪费为其标头分配的任何空间。如果此值设置为true,则此属性将覆盖在页眉最后一节上设置的调整大小模式。 | stretchLastSection () setStretchLastSection (stretch) |
QHeaderView方法
-
PySide6.QtWidgets.QHeaderView.ResizeMode
调整大小模式指定标头部分的行为。它可以使用setSectionResizeMode()在整个页眉视图或单个节上进行设置。
Constant Description QHeaderView.Interactive 用户可以调整分区的大小。也可以使用resizeSection()以编程方式调整节的大小。截面大小默认为defaultSectionSize。(另请参见cascadingSection调整大小。) QHeaderView.Fixed 用户无法调整分区大小。只能使用resizeSection()以编程方式调整节的大小。截面大小默认为defaultSectionSize。 QHeaderView.Stretch QHeaderView将自动调整截面大小以填充可用空间。大小不能由用户或以编程方式更改。 QHeaderView.ResizeToContents QHeaderView将根据整列或整行的内容自动将节的大小调整为最佳大小。大小不能由用户或以编程方式更改。(该值在4.2中引入) QHeaderView.Custom 已过时:改用instead
方法 | 描述 |
---|---|
cascadingSectionResizes()-> bool | 属性cascadingSection的Getter Resizes。 |
count()-> int | 返回标头中的节数。 |
defaultAlignment()-> PySide6.QtCore.Qt.AlignmentFlag | 属性defaultAlignment的Getter。 |
defaultSectionSize()-> int | 属性defaultSectionSize的Getter。 |
hiddenSectionCount()-> int | 返回标头中已隐藏的节数。 |
hideSection(logicalIndex: int)-> None | 隐藏logicalIndex指定的节。 |
hideSection(logicalIndex: int)-> None | 隐藏logicalIndex指定的节。 |
highlightSections()-> bool | 属性highlightSections的Getter。 |
initialize()-> None | 初始化尺寸 |
initializeSections()-> None initializeSections(start: int, end: int)-> None | 初始化选择 |
isFirstSectionMovable()-> bool | 属性firstSectionMovable的Getter。 |
isSectionHidden(logicalIndex: int)-> bool | 如果logicalIndex指定的节对用户显式隐藏,则返回true;否则返回false。 |
isSortIndicatorClearable()-> bool | 属性sortIndicatorClearable的Getter。 |
isSortIndicatorShown()-> bool | 属性showSortIndicator的Getter。 |
length()-> int | 返回沿标头方向的长度。 |
logicalIndexAt(pos: PySide6.QtCore.QPoint)-> int logicalIndexAt(position: int)-> int logicalIndexAt(x: int, y: int)-> int | 返回在位置中给定位置处的节的逻辑索引。如果标题是水平的,则将使用x坐标,否则将使用y坐标来查找逻辑索引。 返回覆盖视口中给定位置的剖面。 返回给定visualIndex位置的节的logicalIndex,如果visualIndex<0或visualIndex>=count(),则返回-1。请注意,visualIndex不受隐藏部分的影响。 |
maximumSectionSize()-> int | 属性getter maximumSectionSize。 |
minimumSectionSize()-> int | 属性minimumSectionSize的Getter。 |
moveSection(from_: int, to: int)-> None | 将视觉索引处的节从移动到占据视觉索引。 |
offset()-> int | 返回标头的偏移量:这是标头的最左边(或垂直标头的最上面)可见像素。 |
orientation()-> PySide6.QtCore.Qt.Orientation | 返回标头的方向。 |
resetDefaultSectionSize()-> None | 重置属性defaultSectionSize的函数。 |
resizeContentsPrecision()-> int | 返回QHeaderView在ResizeToContents上计算的精确程度。 |
resizeSections()-> None resizeSections(mode: PySide6.QtWidgets.QHeaderView.ResizeMode)-> None | 根据节的大小提示调整节的大小。通常情况下,您不必调用此函数。 将logicalIndex指定的节的大小调整为以像素为单位的大小。size参数必须是一个大于或等于零的值。但是,不建议使用等于零的大小。在这种情况下,应该使用hideSection。 |
restoreState(state: Union[PySide6.QtCore.QByteArray, bytes])-> bool | 恢复此标头视图的状态。如果状态已恢复,此函数将返回true;否则返回false。 |
saveState()-> PySide6.QtCore.QByteArray | 保存此标头视图的当前状态。 要恢复保存的状态,请将返回值传递给restoreState()。 |
sectionPosition(logicalIndex: int)-> int | 返回给定logicalIndex的节位置,如果节被隐藏,则返回-1。位置是以像素为单位测量的,从第一个可见项目的左上角到具有logicalIndex的项目的左下角。水平收割台沿x轴测量,垂直收割台沿y轴测量。 |
sectionResizeMode(logicalIndex: int)-> PySide6.QtWidgets.QHeaderView.ResizeMode | 返回适用于给定logicalIndex指定的节的调整大小模式。 |
sectionSize(logicalIndex: int)-> int | 返回给定logicalIndex的宽度(或垂直标头的高度)。 |
sectionSizeHint(logicalIndex: int)-> int | 为logicalIndex指定的节返回合适的大小提示。 大小提示角色SizeHintRole |
restoreState(state: Union[PySide6.QtCore.QByteArray, bytes])-> bool | 恢复此标头视图的状态。如果状态已恢复,此函数将返回true;否则返回false。 |
saveState()-> PySide6.QtCore.QByteArray | 保存此标头视图的当前状态。 要恢复保存的状态,请将返回值传递给restoreState()。 |
sectionPosition(logicalIndex: int)-> int | 返回给定logicalIndex的节位置,如果节被隐藏,则返回-1。位置是以像素为单位测量的,从第一个可见项目的左上角到具有logicalIndex的项目的左下角。水平收割台沿x轴测量,垂直收割台沿y轴测量。 |
sectionResizeMode(logicalIndex: int)-> PySide6.QtWidgets.QHeaderView.ResizeMode | 返回适用于给定logicalIndex指定的节的调整大小模式。 |
sectionSize(logicalIndex: int)-> int | 返回给定logicalIndex的宽度(或垂直标头的高度)。 |
sectionSizeHint(logicalIndex: int)-> int | 为logicalIndex指定的节返回合适的大小提示。 |
sectionViewportPosition(logicalIndex: int)-> int | 返回给定logicalIndex的剖面视口位置。 如果该部分是隐藏的,则返回值是未定义的。 |
sectionsClickable()-> bool | 如果标题是可单击的,则返回true;否则返回false。可以设置可点击的标题,以允许用户更改与标题相关的视图中的数据表示。 |
sectionsHidden()-> bool | 如果标头中的节已被隐藏,则返回true;否则返回false; |
sectionsMovable()-> bool | 如果用户可以移动标头,则返回true;否则返回false。 默认情况下,截面在QTreeView中是可移动的(第一个除外),而在QTableView中是不可移动的。 |
sectionsMoved()-> bool | 如果标头中的节已被移动,则返回true;否则返回false; |
setCascadingSectionResizes(enable: bool)-> None | 属性cascadingSection Resizes的设置程序。 |
setDefaultAlignment(alignment: PySide6.QtCore.Qt.AlignmentFlag)-> None | 属性defaultAlignment的集合。 |
setDefaultSectionSize(size: int)-> None | 属性defaultSectionSize的集合。 |
setFirstSectionMovable(movable: bool)-> None | 属性集firstSection |
setHighlightSections(highlight: bool)-> None | 属性highlightSections的设置者。 |
setMaximumSectionSize(size: int)-> None | 属性maximumSectionSize的设置程序。 |
setMinimumSectionSize(size: int)-> None | 属性minimumSectionSize的设置程序。 |
setResizeContentsPrecision(precision: int)-> None | 设置使用ResizeToContents时QHeaderView计算大小的精确程度。低值将提供不太准确但快速的自动调整大小,而较高的值将提供更准确但可能较慢的调整大小。 数字精度指定在计算首选尺寸时应考虑的截面数量。 默认值为1000,这意味着在进行自动调整大小时,具有自动调整大小功能的水平列在计算时最多可看到1000行。 特殊值0表示它将只查看可见区域。特殊值-1表示查看所有元素。 此值用于sizeHintForColumn()、sizeHintForRow()和sizeHintFor Column(。重新实现这些功能可能会使该功能没有效果。 |
setSectionHidden(logicalIndex: int, hide: bool)-> None | 如果hide为true,则logicalIndex指定的部分将被隐藏;否则显示该部分。 |
setSectionResizeMode(logicalIndex: int, mode: PySide6.QtWidgets.QHeaderView.ResizeMode)-> None setSectionResizeMode(mode: PySide6.QtWidgets.QHeaderView.ResizeMode)-> None | 设置关于如何将页眉调整为给定模式所描述的大小的约束。 设置如何将页眉中logicalIndex指定的节调整为给定模式所描述的节的大小的约束。调用此函数时,逻辑索引应该存在。如果stretchLastSection属性设置为true,则最后一节将忽略此设置。这是QTreeView提供的水平标头的默认值。 |
setSectionsClickable(clickable: bool)-> None | 如果clickable为true,则标题将对单击作出响应。 |
setSectionsMovable(movable: bool)-> None | 如果可移动是真的,则头部部分可以由用户移动;否则,它们将固定到位。 与QTreeView组合使用时,默认情况下,第一列是不可移动的(因为它包含树状结构)。您可以使用setFirstSectionMovable(true)使其可移动。 |
setSortIndicator(logicalIndex: int, order: PySide6.QtCore.Qt.SortOrder)-> None | 按顺序指定的方向为给定logicalIndex指定的节设置排序指示符,并从显示该排序指示符的任何其他节中删除该排序指示符。 logicalIndex可能是-1,在这种情况下,将不会显示排序指示符,并且模型将返回到其自然的、未排序的顺序。请注意,并非所有型号都支持此功能,在这种情况下甚至可能崩溃。 |
setSortIndicatorClearable(clearable: bool)-> None | 属性排序的设置器IndicatorClearable。 |
setSortIndicatorShown(show: bool)-> None | 属性showSortIndicator的设置程序。 |
setStretchLastSection(stretch: bool)-> None | 属性stretchLastSection的设置者。 |
showSection(logicalIndex: int)-> None | 显示由logicalIndex指定的节。 |
sortIndicatorOrder()-> PySide6.QtCore.Qt.SortOrder | 返回排序指示符的顺序。如果没有任何部分具有排序指示符,则此函数的返回值是未定义的。 |
sortIndicatorSection()-> int | 返回具有排序指示符的节的逻辑索引。默认情况下,这是第0节。 |
stretchLastSection()-> bool | 属性stretchLastSection的Getter。 |
stretchSectionCount()-> int | 返回设置为调整模式拉伸大小的节数。在视图中,这可用于查看当视图的几何图形发生更改时,头视图是否需要调整截面的大小。 |
swapSections(first: int, second: int)-> None | 首先交换视觉索引处的截面,然后交换视觉索引下的截面。 |
visualIndex(logicalIndex: int)-> int | 返回给定logicalIndex指定的节的可视索引位置,否则返回-1。 隐藏部分仍然具有有效的视觉索引。 |
visualIndexAt(position: int)-> int | 返回覆盖视口中给定位置的剖面的视觉索引。 |
initStyleOption(option: PySide6.QtWidgets.QStyleOptionFrame)-> None initStyleOption(option: PySide6.QtWidgets.QStyleOptionHeader)-> None | 使用此QHeaderView中的值初始化选项。当子类需要QStyleOptionHeader,但又不想自己填写所有信息时,此方法对它们很有用。 |
initStyleOptionForIndex(option: PySide6.QtWidgets.QStyleOptionHeader, logicalIndex: int)-> None | 从指定的logicalIndex初始化样式选项。在调用initStyleOption之后,paintSection的默认实现会调用此函数。 |
paintSection(painter: PySide6.QtGui.QPainter, rect: PySide6.QtCore.QRect, logicalIndex: int)-> None | 使用给定的painter和rect绘制由给定的logicalIndex指定的部分。 通常情况下,您不必调用此函数。 |
sectionSizeFromContents(logicalIndex: int)-> PySide6.QtCore.QSize | 返回给定logicalIndex指定的节的内容大小。 |
[Slot]headerDataChanged(orientation: PySide6.QtCore.Qt.Orientation, logicalFirst: int, logicalLast: int)-> None | 以给定的方向更新更改后的标题部分,从logicalFirst到logicalLast(包括在内)。 |
[Slot] | |
[Slot]resizeSections()-> None [Slot]resizeSections(mode: PySide6.QtWidgets.QHeaderView.ResizeMode)-> None | 根据节的大小提示调整节的大小。通常情况下,您不必调用此函数。 根据给定的模式调整节的大小,忽略当前的调整大小模式。 |
[Slot]sectionsAboutToBeRemoved(parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], logicalFirst: int, logicalLast: int)-> None | 当从父对象中删除节时,将调用此槽。logicalFirst和logicalLast表示删除部分的位置。 如果只删除一个部分,则logicalFirst和logicalLast将相同。 |
[Slot]sectionsInserted(parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], logicalFirst: int, logicalLast: int)-> None | 将节插入父对象时会调用此槽。logicalFirst和logicalLast索引表示新部分插入的位置。 如果只插入一个节,则logicalFirst和logicalLast将相同。 |
[Slot]setOffset(offset: int)-> None | 将标头的偏移设置为偏移。 |
[Slot]setOffsetToLastSection()-> None | 设置偏移以使最后一个截面可见。 |
[Slot]setOffsetToSectionPosition(visualIndex: int)-> None | 将偏移设置为给定visualSectionNumber处的截面起点。visualSectionNumber是不考虑隐藏部分时的实际可见部分。这并不总是与visualIndex()相同。 |
[Slot]updateSection(logicalIndex: int)-> None | 修改选择 |
QHeaderView信号
信号 | 描述 |
---|---|
geometriesChanged() | 当收割台的几何形状发生变化时,会发出此信号。 |
sectionClicked(logicalIndex:int) | 单击某个部分时会发出此信号。节的逻辑索引由logicalIndex指定。 请注意,还将发出部分Pressed(按下)信号。 |
sectionCountChanged(oldCount:int, newCount:int) | 当节的数量改变时,即当添加或删除节时,会发出此信号。原始计数由oldCount指定,新计数由newCount指定。 |
sectionDoubleClicked(logicalIndex:int) | 双击部分时会发出此信号。节的逻辑索引由logicalIndex指定。 |
sectionEntered(logicalIndex:int) | 当光标在剖面上移动并按下鼠标左键时,会发出此信号。节的逻辑索引由logicalIndex指定。 |
sectionHandleDoubleClicked(logicalIndex:int) | 双击部分时会发出此信号。节的逻辑索引由logicalIndex指定。 |
sectionMoved(logicalIndex:int, oldVisualIndex:int, newVisualIndex:int) | 当一个部分移动时,会发出此信号。节的逻辑索引由logicalIndex指定,旧索引由oldVisualIndex指定,新索引位置由newVisualIndex指定。 |
sectionPressed(logicalIndex: int) | 此信号是在按下某个部分时发出的。节的逻辑索引由logicalIndex指定。 |
sectionResized(logicalIndex: int, oldSize: int, newSize: int) | 当调整节的大小时,会发出此信号。节的逻辑编号由logicalIndex指定,旧大小由oldSize指定,新大小由newSize指定。 |
sortIndicatorChanged(logicalIndex:int, order) | 当包含排序指示符的部分或指示的顺序发生变化时,会发出此信号。节的逻辑索引由logicalIndex指定,排序顺序由order指定。 |
sortIndicatorClearableChanged(clearable:bool) | 属性排序的通知信号IndicatorClearable。 |
-
PySide6.QtCore.Qt.SortOrder
此枚举描述如何对小部件中的项目进行排序。
Constant Description Qt.AscendingOrder 项目按升序排序,例如在拉丁语-1地区以"AAA"开头,以"ZZZ"结尾 Qt.DescendingOrder 项目按降序排序,例如在拉丁语-1地区以"ZZZ"开头,以"AAA"结尾