QTableView讲解

简介

    QTableView类提供了表视图的默认模型/视图实现。项目文件(.pro)添加QT += widgets,头文件中包含#include < QTableView>,即可在自己的项目中使用QTableView类。QTableView父类是QAbstractItemView类;子类有QTableWidget。

属性

cornerButtonEnabled : bool
gridStyle : Qt::PenStyle
showGrid : bool
sortingEnabled : bool
wordWrap : bool

公有槽函数

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)

保护槽函数

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默认启用tabKeyNavigation,你也可以点击Tab和Backtab从单元格移动到另一个单元格。

视觉外观

    这个表有一个垂直标头,可以使用verticalHeader()函数获得,还有一个水平标头可以通过horizontalHeader()函数获得。表中每行的高度可以通过使用rowHeight()找到;类似地,可以使用columnWidth()找到列的宽度。由于这两个都是普通的小部件,因此可以使用它们的hide()函数隐藏它们中的任何一个。
    可以使用hideRow()、hideColumn()、showRow()和showColumn()来隐藏和显示行和列。它们可以通过selectRow()和selectColumn()来选择。表格将根据showGrid属性显示一个网格。
    表视图中显示的项与其他项视图中的项一样,使用标准委托进行呈现和编辑。但是,对于某些任务,有时能够在表中插入小部件是有用的。使用setIndexWidget()函数为特定索引设置小部件,然后使用indexWidget()进行检索。
在这里插入图片描述
    默认情况下,表中的单元格不会展开以填充可用空间。
   您可以通过拉伸最后一个标题部分来使单元格填充可用空间。使用horizontalHeader()或verticalHeader()访问相关的header,并设置header的stretchLastSection属性。
    要根据每一列或每一行的空间需求分配可用空间,请调用视图的resizeColumnsToContents()或resizeRowsToContents()函数。

坐标系统

    对于某些特殊形式的表,能够在行、列索引和小部件坐标之间进行转换是很有用的。rowAt()函数提供指定行的视图内的y坐标;行索引可用于通过rowViewportPosition()获取相应的y坐标。columnAt()和columnViewportPosition()函数提供x坐标和列索引之间的等效转换操作。
参见 QTableWidget, View Classes, QAbstractItemModel, QAbstractItemView, Chart Example, Pixelator Example, and Table Model Example.

属性说明

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

    此属性保留是否显示网格。如果此属性为真,则为表绘制网格;如果该属性为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)

构造一个表视图,其中父视图表示数据。
参见 QAbstractItemModel.

[protected slot] void QTableView::columnCountChanged(int oldCount, int newCount)

每当添加或删除列时,就调用这个槽。以前的列数由oldCount指定,新的列数由newCount指定。

[protected slot] void QTableView::columnMoved(int column, int oldIndex, int newIndex)

调用这个槽来更改表视图中给定列的索引。旧索引由oldIndex指定,新索引由newIndex指定。
参见 rowMoved().

[protected slot] void QTableView::columnResized(int column, int oldWidth, int newWidth)

调用这个槽来更改给定列的宽度。旧宽度由oldWidth指定,新宽度由newWidth指定。
参见 rowResized().

[slot] void QTableView::hideColumn(int column)

隐藏给定的列。
参见 showColumn() and hideRow().

[slot] void QTableView::hideRow(int row)

隐藏给定的行。
参见 showRow() and hideColumn().

[slot] void QTableView::resizeColumnToContents(int column)

根据用于呈现列中每个项目的委托的大小提示,调整给定列的大小。
注意:只有可见的列才会被调整大小。重新实现sizeHintForColumn()来调整隐藏列的大小。
参见 resizeColumnsToContents(), sizeHintForColumn(), 和QHeaderView::resizeContentsPrecision().

[slot] void QTableView::resizeColumnsToContents()

根据用于呈现列中每个项的委托的大小提示调整所有列的大小。
参见 resizeColumnToContents(), sizeHintForColumn(), and QHeaderView::resizeContentsPrecision().

[slot] void QTableView::resizeRowToContents(int row)

根据用于呈现行中每个项的委托的大小提示,重新调整给定行的大小。
参见 resizeRowsToContents(), sizeHintForRow(), and QHeaderView::resizeContentsPrecision().

[slot] void QTableView::resizeRowsToContents()

根据用于呈现行中每个项的委托的大小提示调整所有行的大小。
参见 resizeRowToContents(), sizeHintForRow(), and QHeaderView::resizeContentsPrecision().

[protected slot] void QTableView::rowCountChanged(int oldCount, int newCount)

每当添加或删除行时,就调用这个槽。以前的行数由oldCount指定,新的行数由newCount指定。

[protected slot] void QTableView::rowMoved(int row, int oldIndex, int newIndex)

调用这个槽来更改表视图中给定行的索引。旧索引由oldIndex指定,新索引由newIndex指定。
参见 columnMoved().

[protected slot] void QTableView::rowResized(int row, int oldHeight, int newHeight)

调用这个槽来更改给定行的高度。旧高度由oldHeight指定,新高度由newHeight指定。
参见 columnResized().

[slot] void QTableView::selectColumn(int column)

如果当前的SelectionMode和SelectionBehavior允许选择列,则选择表视图中的给定列。
参见 selectRow().

[slot] void QTableView::selectRow(int row)

如果当前的SelectionMode和SelectionBehavior允许选择行,则在表视图中选择给定的行。
参见 selectColumn().

[slot] void QTableView::showColumn(int column)

显示给定的列。
参见 hideColumn() and showRow().

[slot] void QTableView::showRow(int row)

显示给定的行。
参见 hideRow() and showColumn().

[slot] void QTableView::sortByColumn(int column, Qt::SortOrder order)

根据给定列中的值按给定顺序对模型进行排序。
参见 sortingEnabled.

[virtual] QTableView::~QTableView()

销毁表视图。

void QTableView::clearSpans()

删除表视图中的所有行和列跨度。
参见 setSpan().

int QTableView::columnAt(int x) const

返回内容坐标中给定x坐标x所在的列。
注意:如果给定的坐标无效(没有列),此函数返回-1。
参见 rowAt().

int QTableView::columnSpan(int row, int column) const

返回表元素在(行、列)处的列跨度。默认为1。
参见 setSpan() and rowSpan().

int QTableView::columnViewportPosition(int column) const

返回给定列的内容坐标中的x坐标。

int QTableView::columnWidth(int column) const

返回给定列的宽度。
参见 setColumnWidth(), resizeColumnToContents(), and rowHeight().

[override virtual protected] void QTableView::currentChanged(const QModelIndex &current, const QModelIndex &previous)

重新实现: QAbstractItemView::currentChanged(const QModelIndex &current, const QModelIndex &previous).

QHeaderView *QTableView::horizontalHeader() const

返回表视图的水平页眉。
参见 setHorizontalHeader(), verticalHeader(), and 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处的索引位置。

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 protected] QModelIndex QTableView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)

重新实现: QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers).
使用修饰符提供的信息,根据给定的cursorAction移动光标。
参见 QAbstractItemView::CursorAction.

[override virtual protected] void QTableView::paintEvent(QPaintEvent *event)

重新实现: QAbstractScrollArea::paintEvent(QPaintEvent *event).
在收到给定的绘制事件事件时绘制表。

int QTableView::rowAt(int y) const

返回给定的内容坐标中y坐标所在的行。
注意:如果给定的坐标无效(没有行),此函数返回-1。
参见 columnAt().

int QTableView::rowHeight(int row) const

返回给定行的高度。
参见 setRowHeight(), resizeRowToContents(), and columnWidth().

int QTableView::rowSpan(int row, int column) const

返回表元素在(行、列)处的行跨度。默认为1。
参见 setSpan() and columnSpan().

int QTableView::rowViewportPosition(int row) const

返回给定行的内容坐标中的y坐标。

[override virtual protected] QModelIndexList QTableView::selectedIndexes() const

重新实现: QAbstractItemView::selectedIndexes() const.

[override virtual protected] 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,则指定的列将被隐藏;否则就会显示出来。
参见isColumnHidden() and setRowHidden().

void QTableView::setColumnWidth(int column, int width)

将给定列的宽度设置为width。
参见 columnWidth().

void QTableView::setHorizontalHeader(QHeaderView *header)

将要用于水平标题的小部件设置为header。
参见 horizontalHeader() and setVerticalHeader().

[override virtual] void QTableView::setModel(QAbstractItemModel *model)

重新实现: QAbstractItemView::setModel(QAbstractItemModel *model).

[override virtual] void QTableView::setRootIndex(const QModelIndex &index)

重新实现: QAbstractItemView::setRootIndex(const QModelIndex &index).

void QTableView::setRowHeight(int row, int height)

将给定行的高度设置为height。
参见 rowHeight().

void QTableView::setRowHidden(int row, bool hide)

如果hide为真,row将被隐藏,否则将显示。
参见 isRowHidden() and setColumnHidden().

[override virtual protected] void QTableView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)

重新实现: QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags).
根据指定的选择标志选择给定区域内的项。

[override virtual] void QTableView::setSelectionModel(QItemSelectionModel *selectionModel)

重新实现: QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel).

void QTableView::setSortingEnabled(bool enable)

如果enable为true,则启用对表的排序,并立即使用当前排序部分和顺序触发对sortByColumn()的调用
注意:属性sortingEnabled的Setter功能。参见 isSortingEnabled().

void QTableView::setSpan(int row, int column, int rowSpanCount, int columnSpanCount)

将(行,列)处的表元素的跨度设置为(rowSpanCount, columnSpanCount)指定的行和列数。
参见 rowSpan() and columnSpan().

void QTableView::setVerticalHeader(QHeaderView *header)

设置要用于垂直标题到标题的小部件。
参见 verticalHeader() and setHorizontalHeader().

[override virtual protected] int QTableView::sizeHintForColumn(int column) const

重新实现: QAbstractItemView::sizeHintForColumn(int column) const.
    返回给定列宽度的大小提示,如果没有模型则返回-1。如果需要将给定列的宽度设置为固定值,请在表的水平页眉上调用QHeaderView::resizeSection()。
    如果您在子类中重新实现此函数,请注意,当调用resizeColumnToContents()或QHeaderView::resizeSections()时将使用您返回的值。如果水平标头或项委托需要更大的列宽度,则将使用更大的列宽度。
参见 QWidget::sizeHint, horizontalHeader(), and QHeaderView::resizeContentsPrecision().

[override virtual protected] int QTableView::sizeHintForRow(int row) const

重新实现: QAbstractItemView::sizeHintForRow(int row) const.
    返回给定行高度的大小提示,如果没有模型则返回-1。如果需要将给定行的高度设置为固定值,请在表的垂直标题上调用QHeaderView::resizeSection()。
    如果您在子类中重新实现此函数,请注意您返回的值仅在调用resizeRowToContents()时使用。在这种情况下,如果垂直标头或项委托需要更大的行高,则将使用该宽度。
参见QWidget::sizeHint, verticalHeader(), and QHeaderView::resizeContentsPrecision().

[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(), and QAbstractItemModel::headerData().

[override virtual protected] int QTableView::verticalOffset() const

重新实现: QAbstractItemView::verticalOffset() const.
返回表视图中项的垂直偏移量。
注意,表视图使用垂直标题段位置来确定视图中行的位置。
参见 horizontalOffset().

[override virtual protected] QStyleOptionViewItem QTableView::viewOptions() const

重新实现: QAbstractItemView::viewOptions() const.

[override virtual protected] QSize QTableView::viewportSizeHint() const

重新实现: QAbstractItemView::viewportSizeHint() const.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值