QTableView 类
QTableView类提供了表视图的默认模型/视图的实现。
Header: | #include < QTableView > |
---|---|
qmake: | QT += widgets |
Inherits: | QAbstractItemView |
Inherited By: | QTableWidget |
详述
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()访问相关的标题,并设置标题的stretchLastSection属性。
要根据每个列或行的空间需求分配可用空间,可以调用视图的resizeColumnsToContents()或resizeRowsToContents()函数。
坐标系统
对于某些特殊形式的表,能够在行和列索引和小部件坐标之间进行转换是很有用的。函数的作用是:提供指定行的视图内的y坐标;行索引可用于通过rowViewportPosition()获得相应的y坐标。columnAt()和columnViewportPosition()函数在x坐标和列索引之间提供了等效的转换操作。
属性
- cornerButtonEnabled: bool 用于显示左上角的按钮是否已启用
如果此属性为真,则表视图左上角的按钮是启用的。单击此按钮将选择table视图中的所有单元格。
默认情况下,此属性为真。 - gridStyle: Qt::PenStyle
- showGrid: bool
- sortingEnabled: bool 此属性用于表示是否启用排序
如果此属性为真,则对表启用排序。如果此属性为false,则不启用排序。默认值为false。
注:。使用setSortingEnabled()将属性设置为true,会立即触发对当前排序部分和顺序的sortByColumn()调用。 - wordWrap: bool
公共函数
- QTableView(QWidget *parent = nullptr)
- virtual ~QTableView()
- void clearSpans()
- void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
- int columnAt(int x) const
- int rowAt(int y) const
- int columnSpan(int row, int column) const
- int rowSpan(int row, int column) const
- int columnViewportPosition(int column) const
- int rowViewportPosition(int row) const
- int columnWidth(int column) const
- void setColumnWidth(int column, int width)
- int rowHeight(int row) const
- void setRowHeight(int row, int height)
- Qt::PenStyle gridStyle() const
- void setGridStyle(Qt::PenStyle style)
- bool showGrid() const
- QHeaderView * horizontalHeader() const
- void setHorizontalHeader(QHeaderView *header)
- QHeaderView * verticalHeader() const
- void setVerticalHeader(QHeaderView *header)
- bool isColumnHidden(int column) const
- void setColumnHidden(int column, bool hide)
- bool isRowHidden(int row) const
- void setRowHidden(int row, bool hide)
- bool isCornerButtonEnabled() const
- void setCornerButtonEnabled(bool enable)
- bool isSortingEnabled() const
- void setSortingEnabled(bool enable)
- void setWordWrap(bool on)
- bool wordWrap() const
重新实现公共函数
- virtual QModelIndex indexAt(const QPoint &pos) const override
- virtual void setModel(QAbstractItemModel *model) override
- virtual void setRootIndex(const QModelIndex &index) override
- virtual void setSelectionModel(QItemSelectionModel *selectionModel) 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 bool isIndexHidden(const QModelIndex &index) const override
- virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override
- virtual void paintEvent(QPaintEvent *event) 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 QStyleOptionViewItem viewOptions() const override
- virtual QSize viewportSizeHint() 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)
参见
- QTableWidget
- View Classes
- QAbstractItemModel
- QAbstractItemView
- Chart Example
- Pixelator Example
- Table Model Example.