模型视图(15):【类】QTableView[官翻]

QTableView 类

QTableView类提供了表视图的默认模型/视图的实现。

Header:#include < QTableView >
qmake:QT += widgets
Inherits:QAbstractItemView
Inherited By:QTableWidget

详述

img

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()检索。

img

默认情况下,表中的单元格不会展开以填充可用空间。

您可以通过拉伸最后一个标题部分来填充单元格的可用空间。使用horizontalHeader()或verticalHeader()访问相关的标题,并设置标题的stretchLastSection属性。

要根据每个列或行的空间需求分配可用空间,可以调用视图的resizeColumnsToContents()或resizeRowsToContents()函数。

坐标系统

对于某些特殊形式的表,能够在行和列索引和小部件坐标之间进行转换是很有用的。函数的作用是:提供指定行的视图内的y坐标;行索引可用于通过rowViewportPosition()获得相应的y坐标。columnAt()和columnViewportPosition()函数在x坐标和列索引之间提供了等效的转换操作。

属性

  1. cornerButtonEnabled: bool 用于显示左上角的按钮是否已启用
    如果此属性为真,则表视图左上角的按钮是启用的。单击此按钮将选择table视图中的所有单元格。
    默认情况下,此属性为真。
  2. gridStyle: Qt::PenStyle
  3. showGrid: bool
  4. sortingEnabled: bool 此属性用于表示是否启用排序
    如果此属性为真,则对表启用排序。如果此属性为false,则不启用排序。默认值为false。
    注:。使用setSortingEnabled()将属性设置为true,会立即触发对当前排序部分和顺序的sortByColumn()调用。
  5. wordWrap: bool

公共函数

  1. QTableView(QWidget *parent = nullptr)
  2. virtual ~QTableView()
  3. void clearSpans()
  4. void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
  5. int columnAt(int x) const
  6. int rowAt(int y) const
  7. int columnSpan(int row, int column) const
  8. int rowSpan(int row, int column) const
  9. int columnViewportPosition(int column) const
  10. int rowViewportPosition(int row) const
  11. int columnWidth(int column) const
  12. void setColumnWidth(int column, int width)
  13. int rowHeight(int row) const
  14. void setRowHeight(int row, int height)
  15. Qt::PenStyle gridStyle() const
  16. void setGridStyle(Qt::PenStyle style)
  17. bool showGrid() const
  18. QHeaderView * horizontalHeader() const
  19. void setHorizontalHeader(QHeaderView *header)
  20. QHeaderView * verticalHeader() const
  21. void setVerticalHeader(QHeaderView *header)
  22. bool isColumnHidden(int column) const
  23. void setColumnHidden(int column, bool hide)
  24. bool isRowHidden(int row) const
  25. void setRowHidden(int row, bool hide)
  26. bool isCornerButtonEnabled() const
  27. void setCornerButtonEnabled(bool enable)
  28. bool isSortingEnabled() const
  29. void setSortingEnabled(bool enable)
  30. void setWordWrap(bool on)
  31. bool wordWrap() const

重新实现公共函数

  1. virtual QModelIndex indexAt(const QPoint &pos) const override
  2. virtual void setModel(QAbstractItemModel *model) override
  3. virtual void setRootIndex(const QModelIndex &index) override
  4. virtual void setSelectionModel(QItemSelectionModel *selectionModel) override

公共槽

  1. void hideColumn(int column)
  2. void hideRow(int row)
  3. void resizeColumnToContents(int column)
  4. void resizeColumnsToContents()
  5. void resizeRowToContents(int row)
  6. void resizeRowsToContents()
  7. void selectColumn(int column)
  8. void selectRow(int row)
  9. void setShowGrid(bool show)
  10. void showColumn(int column)
  11. void showRow(int row)
  12. void sortByColumn(int column, Qt::SortOrder order)

重写的受保护的函数

  1. virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous) override
  2. virtual int horizontalOffset() const override
  3. virtual bool isIndexHidden(const QModelIndex &index) const override
  4. virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override
  5. virtual void paintEvent(QPaintEvent *event) override
  6. virtual QModelIndexList selectedIndexes() const override
  7. virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override
  8. virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override
  9. virtual int sizeHintForColumn(int column) const override
  10. virtual int sizeHintForRow(int row) const override
  11. virtual void timerEvent(QTimerEvent *event) override
  12. virtual void updateGeometries() override
  13. virtual int verticalOffset() const override
  14. virtual QStyleOptionViewItem viewOptions() const override
  15. virtual QSize viewportSizeHint() const override

受保护的槽

  1. void columnCountChanged(int oldCount, int newCount)
  2. void columnMoved(int column, int oldIndex, int newIndex)
  3. void columnResized(int column, int oldWidth, int newWidth)
  4. void rowCountChanged(int oldCount, int newCount)
  5. void rowMoved(int row, int oldIndex, int newIndex)
  6. void rowResized(int row, int oldHeight, int newHeight)

参见

  • QTableWidget
  • View Classes
  • QAbstractItemModel
  • QAbstractItemView
  • Chart Example
  • Pixelator Example
  • Table Model Example.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值