QT(5)-QHeaderView

1 说明

QHeaderView 类是一个视图组件,它显示模型中的行或列标题。可以使用 QHeaderView 来控制行和列标题的外观和行为。

2 函数

2.1 级联调整大小

bool cascadingSectionResizes() const
返回是否启用级联调整大小
void setCascadingSectionResizes(bool enable)
设置是否启用级联调整大小
如果参数 enable 设置为 true,则启用级联调整大小;
在这里插入图片描述

如果参数 enable 设置为 false,则禁用级联调整大小。
在这里插入图片描述

2.2 默认对齐方式

Qt::Alignment defaultAlignment() const
返回默认的对齐方式
void setDefaultAlignment(Qt::Alignment alignment)
设置默认对齐方式
在这里插入图片描述在这里插入图片描述

2.3 count()

int QHeaderView::count() const
返回头中的节数。

2.4 表头默认单元格大小

int defaultSectionSize() const
函数返回表头分区的默认大小。默认大小是表头分区在没有指定其他大小的情况下使用的大小。

void setDefaultSectionSize(int size)
设置默认大小

void resetDefaultSectionSize()
函数用于将表头分区的默认大小重置为其默认值。这个函数会忽略任何调用setDefaultSectionSize()函数设置的默认大小。

QTtableView或者QTableWidget的verticalHeader()->setDefaultSectionSize(15)可以设置tableview所有列的默认行高为15。

QTtableView或者QTableWidget的horizontalHeader()->setDefaultSectionSize(15)可以设置tableview所有行的默认列宽为15。

2.5 hiddenSectionCount()

int QHeaderView::hiddenSectionCount() const
返回表头中隐藏的单元格数

2.6 分区显示和隐藏

void QHeaderView::hideSection(int logicalIndex)
它用于隐藏指定的行或列头。它接收一个整数参数logicalIndex,表示要隐藏的行或列的逻辑索引。

bool QHeaderView::isSectionHidden(int logicalIndex) const
是否隐藏了指定的行或列

void QHeaderView::showSection(int logicalIndex)
函数用于显示特定表头分区。它可以用来在用户隐藏表头分区后再次显示该分区。

bool QHeaderView::sectionsHidden() const
它可以用来获取表头分区是否被隐藏。

void QHeaderView::setSectionHidden(int logicalIndex, bool hide)
设置某个分区是否隐藏

2.7 表头高亮

void setHighlightSections(bool highlight)
设置表头高亮

bool highlightSections() const
返回是否高亮

2.8 是否可以移动第一列

bool isFirstSectionMovable() const
void setFirstSectionMovable(bool movable)
此属性用于确定用户是否可以移动第一列

此属性控制用户是否可以移动第一列。在QTreeView中,第一列保存着树结构,因此在默认情况下是不可移动的,即使在setSectionsMovable(true)之后也是如此。

通过调用此方法,它可以再次变得可移动,例如在没有树结构的平面列表的情况下。在这种情况下,建议也调用QTreeView:: setrootisdecoration (false)。

将其设置为true没有效果,除非同时调用setSectionsMovable(true)。

2.7 是否显示排序索引

bool isSortIndicatorShown() const
返回是否显示排序指示符
void setSortIndicatorShown(bool show)
设置是否显示排序指示符
void QHeaderView::setSortIndicator(int logicalIndex, Qt::SortOrder order)
函数用于设置表头分区的排序指示器。它可以用来在表头分区上显示一个排序图标,以指示表中的数据当前的排序状态
参数logicalIndex是要设置排序指示器的表头分区的逻辑索引。参数order是一个枚举值,表示排序的方式,它可以是以下值之一:

Qt::AscendingOrder:升序排序。
Qt::DescendingOrder:降序排序。
Qt::SortOrder QHeaderView::sortIndicatorOrder() const
函数用于检索表头分区的排序指示器的排序方式。它可以用来检索表中的数据当前的排序状态。

2.8 表头长度

int QHeaderView::length() const
返回沿标题方向的长度。

2.9 逻辑索引

int QHeaderView::logicalIndex(int visualIndex) const
logicalIndex()函数返回给定的可视表头分区的逻辑索引。逻辑索引是模型中的行或列索引,而可视索引是用户看到的索引,可能因为用户对表头分区进行了拖放而改变。

例如,如果您有一个表格,其中第一列显示的是模型中的第二列,第二列显示的是模型中的第三列,则logicalIndex(0)将返回1,logicalIndex(1)将返回2。

2.10 表头分区最大/小大小

int QHeaderView::maximumSectionSize() const
函数返回表头分区的最大大小。这意味着,即使用户尝试将表头分区调整为更大的大小,也不会超过此最大大小。默认大小1048575

void QHeaderView::setMaximumSectionSize(int size)
设置表头分区的最大大小,参数size是表头分区的最大大小。

int minimumSectionSize() const
函数返回表头分区的最小大小
void setMinimumSectionSize(int size)
设置表头分区的最小大小,

2.11 移动分区

void QHeaderView::moveSection(int from, int to)
函数用于移动表头分区,参数from是要移动的表头分区的逻辑索引。参数to是要将表头分区移动到的位置的逻辑索引。

bool QHeaderView::sectionsMovable() const
函数用于检索表头分区是否可移动。它可以用来获取表头分区是否可以通过拖动来移动。

void QHeaderView::setSectionsMovable(bool movable)
设置表头分区是否可通过拖动来移动

bool QHeaderView::sectionsMoved() const
函数用于检索表头分区是否已经移动。

2.12 表头偏移量

int QHeaderView::offset() const
返回标头的偏移量:这是标头最左边(垂直标头是最上面)可见像素。

如果表头分区是水平的,则偏移量表示表头分区相对于其所属视图左侧的偏移量。如果表头分区是垂直的,则偏移量表示表头分区相对于其所属视图顶部的偏移量。

这个函数通常用于与sectionPosition()函数一起使用,以确定表头分区的绝对位置。例如,如果表头是水平的,则可以使用以下代码计算第二列的绝对位置:

int position = headerView->sectionPosition(1) + headerView->offset();

void QHeaderView::setOffset(int offset) slot[]
槽函数,设置偏移量

2.13 表头方向

Qt::Orientation QHeaderView::orientation() const
返回表头方向
在这里插入图片描述

2.14 表头分区大小使用的精度

int QHeaderView::resizeContentsPrecision() const
函数返回调整表头分区大小时使用的精度。精度是指表头分区调整大小时可以接受的最小增量。

void QHeaderView::setResizeContentsPrecision(int precision)
设置调整表头分区大小时使用的精度

2.15 调整分区大小

int QHeaderView::sectionSize(int logicalIndex) const
返回逻辑索引位置的分区的大小

void QHeaderView::resizeSection(int logicalIndex, int size)
函数用于调整表头分区的大小。它可以用来改变表头分区的大小,使其与您指定的大小匹配。参数logicalIndex是要调整大小的表头分区的逻辑索引。参数size是表头分区的新大小。

void QHeaderView::resizeSections(QHeaderView::ResizeMode mode)
函数用于调整表头分区的大小。它可以用来将所有表头分区的大小调整为指定的模式。

参数mode是表头分区的调整模式。可以使用以下值之一:

  • QHeaderView::Interactive:表头分区的大小可以由用户交互式调整。
  • QHeaderView::Stretch:表头分区的大小会自动调整,以使表头分区总大小与视图大小匹配。
  • QHeaderView::ResizeToContents:表头分区的大小会自动调整,以使表头分区能够完全显示其内容。
  • QHeaderView::Fixed:表头分区的大小不会改变。

2.16 分区状态

bool QHeaderView::restoreState(const QByteArray &state)
函数用于恢复表头分区的状态(表头分区的状态是指表头分区的当前设置。它包括表头分区的大小、位置、可见性以及其他设置。)。它可以用来将表头分区的状态恢复到以前保存的状态。

参数state是表头分区的状态。可以使用saveState()函数保存表头分区的状态。

QByteArray QHeaderView::saveState() const
函数用于保存表头分区的状态。它可以用来将表头分区的当前状态保存到一个字节数组中。

2.17 分区的位置

int QHeaderView::sectionPosition(int logicalIndex) const
返回给定logicalIndex的section位置,如果该section是隐藏的,则返回-1。位置以像素为单位,从第一个可见项的左上角到具有logicalIndex的项的左上角。水平标题沿x轴测量,垂直标题沿y轴测量。

2.18 分区的调整模式

QHeaderView::ResizeMode QHeaderView::sectionResizeMode(int logicalIndex) const
函数用于检索表头分区的调整模式。它可以用来获取表头分区的调整模式,即表头分区的大小是否可以由用户交互式调整、是否会自动调整以使表头分区总大小与视图大小匹配、是否会自动调整以使表头分区能够完全显示其内容、或者是否固定不变。

void QHeaderView::setSectionResizeMode(QHeaderView::ResizeMode mode)
函数用于设置表头分区的调整大小模式。它可以用来控制表头分区在调整大小时的行为。

void QHeaderView::setSectionResizeMode(int logicalIndex, QHeaderView::ResizeMode mode)
函数用于设置特定表头分区的调整大小模式。它可以用来控制特定表头分区在调整大小时的行为。
参数logicalIndex是要设置调整大小模式的表头分区的逻辑索引。参数mode是一个枚举值,它可以是以下值之一:

QHeaderView::Interactive:表头分区可以通过拖动调整大小。
QHeaderView::Fixed:表头分区的大小固定不变。
QHeaderView::ResizeToContents:表头分区的大小根据内容调整。

2.19 分区大小提示

int QHeaderView::sectionSizeHint(int logicalIndex) const
函数用于检索表头分区的大小提示。它可以用来获取表头分区的大小提示,即表头分区的期望大小(相对于表头内容而言)。

2.20 sectionViewportPosition

int QHeaderView::sectionViewportPosition(int logicalIndex) const
函数用于检索表头分区的视图窗口位置。它可以用来获取表头分区相对于视图窗口左上角的水平位置。

2.21 表头是否可以点击

bool QHeaderView::sectionsClickable() const
返回是否可以点击

void QHeaderView::setSectionsClickable(bool clickable)
函数用于设置表头分区是否可点击。它可以用来设置表头分区是否可以响应鼠标单击事件。

2.22 最后一个分区是否拉伸填充

bool stretchLastSection() const
函数用于检索表头分区是否会自动调整大小以使最后一个分区占满整个视图。

void setStretchLastSection(bool stretch)
设置表头分区是否会自动调整大小以使最后一个分区占满整个视图

int QHeaderView::stretchSectionCount() const
函数用于检索表头分区会自动调整大小以使最后一个分区占满整个视图的分区数。

2.23 分区交换位置

void QHeaderView::swapSections(int first, int second)
函数用于交换两个表头分区的位置。它可以用来调整表头分区的顺序。
参数first是要交换的第一个表头分区的逻辑索引。参数second是要交换的第二个表头分区的逻辑索引。

2.24 槽函数

void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast) slot[]
函数用于通知表头数据已更改。它可以用来在更改表头分区的数据后更新视图。

void QHeaderView::setOffsetToLastSection()
函数用于将表头偏移量设置为最后一个表头分区的右端点。这会使表头中的最后一个分区完全显示在视图中。

void QHeaderView::setOffsetToSectionPosition(int visualSectionNumber)
函数用于将表头偏移量设置为给定的表头分区的位置。这会使表头中的给定的分区完全显示在视图中。

2.25 信号

void geometriesChanged()
void sectionClicked(int logicalIndex)
void sectionCountChanged(int oldCount, int newCount)
void sectionDoubleClicked(int logicalIndex)
void sectionEntered(int logicalIndex)
void sectionHandleDoubleClicked(int logicalIndex)
void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex)
void sectionPressed(int logicalIndex)
void sectionResized(int logicalIndex, int oldSize, int newSize)
void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order)

  • sectionClicked(int logicalIndex):表头分区被单击时发出。参数logicalIndex是表头分区的逻辑编号。
  • sectionDoubleClicked(int logicalIndex):表头分区被双击时发出。参数logicalIndex是表头分区的逻辑编号。
  • sectionEntered(int logicalIndex):鼠标指针进入表头分区时发出。参数logicalIndex是表头分区的逻辑编号。
  • sectionHandleDoubleClicked(int logicalIndex):表头分区的拖动手柄被双击时发出。参数logicalIndex是表头分区的逻辑编号。
  • sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex):表头分区被移动时发出。参数logicalIndex是表头分区的逻辑编号,oldVisualIndex是表头分区的旧视觉编号,newVisualIndex是表头分区的新视觉编号。
  • sectionPressed(int logicalIndex):表头分区被按下时发出。参数logicalIndex是表头分区的逻辑编号。
  • sectionResized(int logicalIndex, int oldSize, int newSize):表头分区被调整大小时发出。参数logicalIndex是表头分区的逻辑编号,oldSize是表头分区的旧大小,newSize是表头分区的新大小
  • sortIndicatorChanged(int logicalIndex, Qt::SortOrder order):表头分区的排序指示符更改时发出。参数logicalIndex是表头分区的逻辑编号,order是表头分区的排序顺序。
  • geometriesChanged():表头分区的几何数据更改时发出。
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QHeaderView 是一个用于显示表格头部信息的控件,它支持多层表头。如果需要实现多层表头,可以使用 QStandardItemModel 来创建一个有层次结构的表格模型,然后将这个模型设置给 QTableView 控件。然后,QHeaderView 控件就可以根据这个模型来显示多层表头。 下面是一个简单的示例代码,演示如何使用 QStandardItemModel 和 QTableView 实现多层表头: ```cpp QStandardItemModel *model = new QStandardItemModel(); // 设置列数和行数 model->setColumnCount(3); model->setRowCount(2); // 设置第一层表头 model->setHeaderData(0, Qt::Horizontal, "A"); model->setHeaderData(1, Qt::Horizontal, "B"); model->setHeaderData(2, Qt::Horizontal, "C"); // 设置第二层表头 QList<QStandardItem*> secondHeaders; for (int i = 0; i < 3; i++) { QStandardItem *item = new QStandardItem(); item->setData("Sub" + QString::number(i), Qt::DisplayRole); secondHeaders.append(item); } model->insertRow(0, secondHeaders); QTableView *tableView = new QTableView(); tableView->setModel(model); // 设置表头控件 QHeaderView *headerView = new QHeaderView(Qt::Horizontal, tableView); headerView->setSectionsClickable(true); headerView->setSectionResizeMode(QHeaderView::Stretch); tableView->setHorizontalHeader(headerView); // 显示表格 tableView->show(); ``` 在这个示例中,我们首先创建了一个 QStandardItemModel 对象,并设置了两层表头。第一层表头包含了三个列,显示为 "A"、"B" 和 "C"。第二层表头包含了三个子列,显示为 "Sub0"、"Sub1" 和 "Sub2"。 然后,我们创建了一个 QTableView 控件,并将我们创建的模型设置给它。接着,我们创建了一个 QHeaderView 控件,并将它设置为水平表头。最后,我们将这个表头控件设置给 QTableView 控件,然后显示表格。 这样,我们就实现了一个带有多层表头的表格。如果需要更复杂的表头结构,可以继续使用 QStandardItemModel 来创建更深层次的表格模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m晴朗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值