QTableView 类
QTableView 类提供了表格视图的默认的模型/视图实现。 更多...
头文件 | #include <QTableView> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承自 | QAbstractItemView |
被以下类继承 |
属性
|
|
公共函数
QTableView(QWidget *parent = nullptr) | |
virtual | ~QTableView() |
void | clearSpans() |
int | columnAt(int x) const |
int | columnSpan(int row, int column) const |
int | columnViewportPosition(int column) const |
int | columnWidth(int column) const |
Qt::PenStyle | gridStyle() const |
QHeaderView * | horizontalHeader() const |
bool | isColumnHidden(int column) const |
bool | isCornerButtonEnabled() const |
bool | isRowHidden(int row) const |
bool | isSortingEnabled() const |
int | rowAt(int y) const |
int | rowHeight(int row) const |
int | rowSpan(int row, int column) const |
int | rowViewportPosition(int row) const |
void | setColumnHidden(int column, bool hide) |
void | setColumnWidth(int column, int width) |
void | setCornerButtonEnabled(bool enable) |
void | setGridStyle(Qt::PenStyle style) |
void | setHorizontalHeader(QHeaderView *header) |
void | setRowHeight(int row, int height) |
void | setRowHidden(int row, bool hide) |
void | setSortingEnabled(bool enable) |
void | setSpan(int row, int column, int rowSpanCount, int columnSpanCount) |
void | setVerticalHeader(QHeaderView *header) |
void | setWordWrap(bool on) |
bool | showGrid() const |
QHeaderView * | verticalHeader() const |
bool | wordWrap() const |
重写的公共函数
virtual QModelIndex | indexAt(const QPoint &pos) const override |
virtual void | scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) override |
virtual void | setModel(QAbstractItemModel *model) override |
virtual void | setRootIndex(const QModelIndex &index) override |
virtual void | setSelectionModel(QItemSelectionModel *selectionModel) override |
virtual QRect | visualRect(const QModelIndex &index) const override |
公共槽
void | hideColumn(int column) |
void | hideRow(int row) |
void | resizeColumnToContents(int column) |
void | resizeColumnsToContents() |
void | resizeRowToContents(int row) |
void | resizeRowsToContents() |
void | selectColumn(int column) |
void | selectRow(int row) |
void | setShowGrid(bool show) |
void | showColumn(int column) |
void | showRow(int row) |
void | sortByColumn(int column, Qt::SortOrder order) |
重写的受保护函数
virtual void | currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override |
virtual int | horizontalOffset() const override |
virtual void | initViewItemOption(QStyleOptionViewItem *option) const override |
virtual bool | isIndexHidden(const QModelIndex &index) const override |
virtual QModelIndex | moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override |
virtual void | paintEvent(QPaintEvent *event) override |
virtual void | scrollContentsBy(int dx, int dy) override |
virtual QModelIndexList | selectedIndexes() const override |
virtual void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override |
virtual void | setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override |
virtual int | sizeHintForColumn(int column) const override |
virtual int | sizeHintForRow(int row) const override |
virtual void | timerEvent(QTimerEvent *event) override |
virtual void | updateGeometries() override |
virtual int | verticalOffset() const override |
virtual QSize | viewportSizeHint() const override |
virtual QRegion | visualRegionForSelection(const QItemSelection &selection) const override |
受保护槽
void | columnCountChanged(int oldCount, int newCount) |
void | columnMoved(int column, int oldIndex, int newIndex) |
void | columnResized(int column, int oldWidth, int newWidth) |
void | rowCountChanged(int oldCount, int newCount) |
void | rowMoved(int row, int oldIndex, int newIndex) |
void | rowResized(int row, int oldHeight, int newHeight) |
详细描述
QTableView 实现了一个表格视图,可以显示模型中的项目。这个类用于提供标准表格,以前由 QTable 类提供,但使用 Qt 的模型/视图架构提供的更灵活的方法。
QTableView 类是 模型/视图类 之一,是 Qt 的 模型/视图框架 的组成部分。
QTableView 实现了由 QAbstractItemView 类定义的接口,以便它能显示由 QAbstractItemModel 类派生的模型提供的数据。
导航
您可以通过鼠标点击表格中的单元格或使用箭头键来导航表格中的单元格。由于 QTableView 默认启用 tab键导航,因此您还可以按 Tab 键和 Backtab 键从一个单元格移动到另一个单元格。
视觉外观
表格有一个垂直表头,可以通过使用 verticalHeader() 函数来获取,还有一个可通过 horizontalHeader() 函数获取的水平表头。可以通过使用 rowHeight() 找到表格中每一行的高度;类似地,可以通过使用 columnWidth() 找到列的宽度。由于这两个都是普通小部件,您可以使用它们的 hide() 函数来隐藏其中任意一个。每个表头都配置了其 highlightSections 和 sectionsClickable 属性设置为 true
。
可以使用 hideRow(),hideColumn,showRow 和 showColumn 来隐藏和显示行和列。它们可以通过 selectRow() 和 selectColumn 来选择。根据 showGrid 属性,表格将显示网格。
表格视图显示的项目,如其他项目视图一样,使用标准的 代理 进行渲染和编辑。然而,对于某些任务,有时能够在表格中插入小部件是有用的。通过使用 setIndexWidget() 函数为特定索引设置小部件,并通过 indexWidget() 在之后检索。
默认情况下,表格中的单元格不会扩展以填充可用空间。 您可以通过拉伸最后一个表头部分来使单元格填充可用空间。使用 horizontalHeader() 或 verticalHeader() 访问相关表头,并设置表头的 stretchLastSection 属性。 要按每个列或行的空间需求分配可用空间,请调用视图的 resizeColumnsToContents() 或 resizeRowsToContents() 函数。 |
坐标系
对于某些特殊形式的表格,能够在行和列索引以及部件坐标之间进行转换是有用的。函数 rowAt() 提供了指定行的视图内的 y 坐标;行索引可以用 rowViewportPosition() 获取相应的 y 坐标。函数 columnAt() 和 columnViewportPosition() 提供了在 x 坐标和列索引之间的等效转换操作。
另请参阅QTableWidget、视图类、QAbstractItemModel、QAbstractItemView 和 表格模型示例。
属性文档
cornerButtonEnabled : bool
此属性表示左上角的按钮是否启用
如果此属性为 true
,则表视图右上角的按钮启用。单击此按钮将选择表视图中所有的单元格。
默认情况下此属性为 true
。
访问函数
bool | isCornerButtonEnabled() const |
void | setCornerButtonEnabled(bool enable) |
gridStyle : Qt::PenStyle
此属性保存用于绘制网格的笔的样式。
此属性保存绘制网格时使用的样式(参看 showGrid)。
访问函数
Qt::PenStyle | gridStyle() const |
void | setGridStyle(Qt::PenStyle style) |
showGrid : bool
此属性表示是否显示网格
如果此属性为 true
,则表中绘制网格;如果属性为 false
,则不绘制网格。默认值是 true。
访问函数
bool | showGrid() const |
void | setShowGrid(bool show) |
sortingEnabled : bool
此属性表示是否启用排序
如果此属性为 true
,则为表格启用排序。如果此属性为 false
,则不启用排序。默认值是 false。
注意: 使用 setSortingEnabled() 将此属性设置为 true 会立即触发调用 sortByColumn(),具有当前的排序部分和顺序。
访问函数
bool | isSortingEnabled() const |
void | setSortingEnabled(bool enable) |
另请参阅sortByColumn。
wordWrap : bool
此属性表示项文本换行策略
如果此属性为 true
,则项文本在必要时在单词断点处换行;否则不会换行。默认情况下此属性为 true
。
请注意,即使是启用了换行,单元格也不会扩展以适应所有文本。将根据当前的 textElideMode 插入省略号。
访问函数
bool | wordWrap() const |
void | setWordWrap(bool on) |
成员函数文档
[显式]
QTableView::QTableView(QWidget *parent = nullptr)
创建一个表视图,用于表示数据,并带有 parent。
另请参阅QAbstractItemModel。
[虚拟 noexcept]
QTableView::~QTableView()
销毁表视图。
void QTableView::clearSpans()
移除表视图中的所有行和列跨度。
另请参阅setSpan。
int QTableView::columnAt(int x) const
返回包含给定内容坐标 x 坐标的列。
注意:如果给定的坐标无效(没有列),则此函数返回 -1。
另请参阅rowAt。
[保护槽]
void QTableView::columnCountChanged(int oldCount, int newCount)
每当添加或删除列时调用此槽。之前列数由 oldCount 指定,新的列数由 newCount 指定。
[保护槽]
void QTableView::columnMoved(int column, int oldIndex, int newIndex)
调用此槽以更改表视图中给定 column 的索引。旧的索引由 oldIndex 指定,新的索引由 newIndex 指定。
另请参阅rowMoved。
[保护槽]
void QTableView::columnResized(int column, int oldWidth, int newWidth)
调用此槽以更改给定 column 的宽度。旧宽度由 oldWidth 指定,新宽度由 newWidth 指定。
另请参阅rowResized。
int QTableView::columnSpan(int row, int column) const
返回位于 (row, column) 处的表元素的列跨度。默认值为 1。
int QTableView::columnViewportPosition(int column) const
返回给定 column 的内容坐标中的 x 坐标。
int QTableView::columnWidth(int column) const
返回给定 column 的宽度。
另请参阅setColumnWidth,resizeColumnToContents 和 rowHeight。
[覆盖虚保护]
void QTableView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
重新实现:QAbstractItemView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous).
[slot]
void QTableView::hideColumn(int column)
隐藏指定的 列.
另请参阅showColumn() 和 hideRow().
[slot]
void QTableView::hideRow(int row)
隐藏指定的 行.
另请参阅showRow() 和 hideColumn().
QHeaderView *QTableView::horizontalHeader() const
返回表格的水平表头。
另请参阅setHorizontalHeader()、verticalHeader() 和 QAbstractItemModel::headerData().
[override virtual protected]
int QTableView::horizontalOffset() const
重新实现:QAbstractItemView::horizontalOffset() const.
返回表格视图中项目的水平偏移。
请注意,表格视图使用水平表头部分的位位置来确定视图中列的位置。
另请参阅verticalOffset().
[override virtual]
QModelIndex QTableView::indexAt(const QPoint &pos) const
重新实现:QAbstractItemView::indexAt(const QPoint &point) const.
返回模型项和表格中在内容坐标系中位置为 pos 的项目相对应的索引位置。
[override virtual protected]
void QTableView::initViewItemOption(QStyleOptionViewItem *option) const
重新实现:QAbstractItemView::initViewItemOption(QStyleOptionViewItem *option) const.
bool QTableView::isColumnHidden(int column) const
如果指定的 列 被隐藏,则返回 true
;否则返回 false
。
另请参阅isRowHidden().
[override virtual protected]
bool QTableView::isIndexHidden(const QModelIndex &index) const
重新实现:QAbstractItemView::isIndexHidden(const QModelIndex &index) const.
bool QTableView::isRowHidden(int row) const
如果指定的 行 被隐藏,则返回 true
;否则返回 false
。
另请参阅isColumnHidden().
[override virtual]
QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
重新实现:QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
根据给定的 cursorAction 移动光标,并使用由 modifiers 提供的信息。
另请参阅QAbstractItemView::CursorAction.
[重载虚拟保护]
void QTableView::paintEvent(QPaintEvent *event)
重新实现:QAbstractScrollArea::paintEvent(QPaintEvent *event)
在接收到给定的绘制事件 event 时绘制表格。
[槽]
void QTableView::resizeColumnToContents(int column)
根据用于渲染列中每个项的代理的大小提示重新设置给定的 column 的大小。
注意:只有可见的列将被调整大小。重新实现 sizeHintForColumn() 以调整隐藏的列的大小。
另请参阅resizeColumnsToContents(), sizeHintForColumn() 和 QHeaderView::resizeContentsPrecision.
[槽]
void QTableView::resizeColumnsToContents()
根据用于渲染列中每个项的代理的大小提示调整所有列的大小。
另请参阅resizeColumnToContents(), sizeHintForColumn() 和 QHeaderView::resizeContentsPrecision.
[槽]
void QTableView::resizeRowToContents(int row)
根据用于渲染行中每个项的代理的大小提示重新设置给定的 row 的大小。
另请参阅resizeRowsToContents(), sizeHintForRow() 和 QHeaderView::resizeContentsPrecision.
[槽]
void QTableView::resizeRowsToContents()
根据用于渲染行中每个项的代理的大小提示调整所有行的大小。
另请参阅resizeRowToContents(), sizeHintForRow() 和 QHeaderView::resizeContentsPrecision.
int QTableView::rowAt(int y) const
返回给定内容坐标中的 y 坐标所在的行。
注意:如果给定的坐标无效(没有行),此函数返回 -1。
另请参阅columnAt().
[保护槽]
void QTableView::rowCountChanged(int oldCount, int newCount)
每当添加或删除行时,都会调用此槽。以前行数由 oldCount 指定,新行数由 newCount 指定。
int QTableView::rowHeight(int row) const
返回给定 行 的高度。
另请参阅 setRowHeight(),resizeRowToContents()和columnWidth()。
[受保护的槽函数]
void QTableView::rowMoved(int row, int oldIndex, int newIndex)
此槽函数用于更改表格视图中给定 行 的索引。旧索引由 oldIndex 指定,新索引由 newIndex 指定。
另请参阅 columnMoved()。
[受保护的槽函数]
void QTableView::rowResized(int row, int oldHeight, int newHeight)
该槽函数用于更改给定 行 的高度。旧高度由 oldHeight 指定,新高度由 newHeight 指定。
另请参阅 columnResized()。
int QTableView::rowSpan(int row, int column) const
返回表格元素(行, 列)的行跨度。默认为 1。
另请参阅 setSpan() 和 columnSpan()。
int QTableView::rowViewportPosition(int row) const
返回给定 行 在内容坐标中的 y 坐标。
[重写虚拟受保护的]
void QTableView::scrollContentsBy(int dx, int dy)
重新实现了: QAbstractScrollArea::scrollContentsBy(int dx, int dy)
通过(dx, dy)滚动表格视图的内容。
[重写虚拟]
void QTableView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible)
重新实现了: QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint)
确保给定的 索引 在表格视图中可见,并在必要时进行滚动。
[槽函数]
void QTableView::selectColumn(int column)
如果当前 SelectionMode 和 SelectionBehavior 允许选择列,则选择表格视图中的给定 列。
另请参阅 selectRow()。
[槽函数]
void QTableView::selectRow(int row)
如果当前 SelectionMode 和 SelectionBehavior 允许选择行,则选择表格视图中的给定 行。
另请参阅 selectColumn()。
[重写虚拟受保护的]
QModelIndexList QTableView::selectedIndexes() const
重新实现:QAbstractItemView::selectedIndexes() const.
[覆盖虚保护]
void QTableView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
重新实现:QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected).
void QTableView::setColumnHidden(int column, bool hide)
如果 hide 为 true,则给定 column 将被隐藏;否则将显示。
另请参阅 isColumnHidden() 和 setRowHidden().
void QTableView::setColumnWidth(int column, int width)
将给定 column 的宽度设置为 width。
另请参阅 columnWidth().
void QTableView::setHorizontalHeader(QHeaderView *header)
设置用于水平标题的控件为 header。
另请参阅 horizontalHeader() 和 setVerticalHeader().
[覆盖虚]
void QTableView::setModel(QAbstractItemModel *model)
重新实现:QAbstractItemView::setModel(QAbstractItemModel *model).
[覆盖虚]
void QTableView::setRootIndex(const QModelIndex &index)
重新实现:QAbstractItemView::setRootIndex(const QModelIndex &index).
void QTableView::setRowHeight(int row, int height)
将给定 row 的高度设置为 height。
另请参阅 rowHeight().
void QTableView::setRowHidden(int row, bool hide)
如果 hide 为 true,row 将被隐藏,否则将显示。
另请参阅 isRowHidden() 和 setColumnHidden().
[覆盖虚保护]
void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)
重新实现:QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags).
选择给定 rect 内的项,并按照指定的选择 flags。
[覆盖虚]
void QTableView::setSelectionModel(QItemSelectionModel *selectionModel)
重实现:QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel).
void QTableView::setSortingEnabled(bool enable)
如果 enable 为真,则启用表格排序并立即调用 sortByColumn() 以当前排序的列和顺序
注意:属性 sortingEnabled 的设置函数。
另请参阅:isSortingEnabled().
void QTableView::setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
将表格元素在 (row, column) 的范围设置为通过 (rowSpanCount, columnSpanCount) 指定的行数和列数。
另请参阅:rowSpan() 和 columnSpan().
void QTableView::setVerticalHeader(QHeaderView *header)
将用于垂直表头的控件设置为 header。
另请参阅:verticalHeader() 和 setHorizontalHeader().
[slot]
void QTableView::showColumn(int column)
显示给定的 column。
另请参阅:hideColumn() 和 showRow().
[slot]
void QTableView::showRow(int row)
显示给定的 row。
另请参阅:hideRow() 和 showColumn().
[override virtual protected]
int QTableView::sizeHintForColumn(int column) const
重实现了:QAbstractItemView::sizeHintForColumn(int column) const.
返回给定 column 的宽度的大小提示或如果没有模型则返回 -1。
如果您需要将给定列的宽度设置为固定值,请在表格的水平表头上调用 QHeaderView::resizeSection().
如果您在子类中重写此函数,请注意您返回的值将被用于调用 resizeColumnToContents() 或 QHeaderView::resizeSections() 时。如果水平表头或项目代理需要更大的列宽,则将使用更大的宽度。
另请参阅:QWidget::sizeHint,horizontalHeader() 和 QHeaderView::resizeContentsPrecision().
[override virtual protected]
int QTableView::sizeHintForRow(int row) const
重实现了:QAbstractItemView::sizeHintForRow(int row) const.
返回给定 row 的高度的大小提示或如果没有模型则返回 -1。
如果您需要将给定行的长度设置为固定值,请在表格的垂直表头上调用 QHeaderView::resizeSection().
如果您在子类中重新实现了这个函数,请注意,您返回的值仅在使用时返回resizeRowToContents()。在这种情况下,如果垂直表头或项目代理需要更大的行高,将使用该宽度。
另请参阅QWidget::sizeHint,verticalHeader()和QHeaderView::resizeContentsPrecision。
[slot]
void QTableView::sortByColumn(int column, Qt::SortOrder order)
按给定列的值和秩序对模型进行排序。
column可能为-1,在这种情况下,不会显示排序指示器,并且模型将返回其自然、未排序的顺序。请注意,并非所有模型都支持此功能,甚至可能在这种情况下崩溃。
另请参阅sortingEnabled。
[override virtual protected]
void QTableView::timerEvent(QTimerEvent *event)
重新实现:QAbstractItemView::timerEvent(QTimerEvent *event)
[override virtual protected]
void QTableView::updateGeometries()
重新实现:QAbstractItemView::updateGeometries
QHeaderView *QTableView::verticalHeader() const
返回表格视图的垂直表头。
另请参阅setVerticalHeader,horizontalHeader和QAbstractItemModel::headerData
[override virtual protected]
int QTableView::verticalOffset() const
重新实现:QAbstractItemView::verticalOffset() const
返回表格视图中项的垂直偏移量。
注意,表格视图使用垂直表头部分的定位来确定视图中行的位置。
另请参阅horizontalOffset
[override virtual protected]
QSize QTableView::viewportSizeHint() const
重新实现:QAbstractItemView::viewportSizeHint() const
[override virtual]
QRect QTableView::visualRect(const QModelIndex &index) const
重新实现:QAbstractItemView::visualRect(const QModelIndex &index) const
返回由给定index占用的视口矩形。如果索引在视图中隐藏,则返回一个空QRect。
[override virtual protected]
QRegion QTableView::visualRegionForSelection(const QItemSelection &selection) const
重新实现:QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const
返回给定selection中项的视口矩形。
自4.7以来,返回的区域仅包含与视口相交(或包含)的矩形。
© 2024 Qt公司有限公司。本文档中包含的文档贡献是各自所有者的版权。本文档是根据免费软件基金会发布的《GNU自由文档许可证》第1.3版提供的,许可证链接为:GNU自由文档许可证版本1.3。Qt及其相应标志是芬兰及/或其他国家全球的商标,由Qt公司有限公司拥有。所有其他商标均为各自所有者的财产。