目录
例子使用:
双击选中获取单元格的值:
connect(ui->tableView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(slotDoubleClickedTableView(const QModelIndex&))); void slotDoubleClickedTableView(const QModelIndex &index) { QAbstractItemModel *model = ui->tableView->model(); QModelIndex indexCurr = model->index(index.row(), 1) model->data(indexCurr).toString(); }
设置表模型,将模型数据填入表中:
QSqlQueryModel sqlQueryModel; ui->tableView->setModel(sqlQueryModel);
当前行:
int currRow = ui->tableView->currentIndex().row(); QAbstractItemModel *model = ui->tableView->model(); QModelIndex index = model->index(currRow, 0);//选中行第一列的内容 int id = model->data(index).toInt();
设置列宽度:
ui->tableView->setColumnWidth(0, 100);
隐藏列:
ui->tableView->setColumnHidden(0, true); // 隐藏 ID列
设置滚动条范围:
ui->tableView->verticalScrollBar()->setRange(0, num); //设置滚动条范围
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 自适应 ui->tableView->setColumnWidth(4, 120);//设置列宽度
Void setTableFormat(void) { //是否显示网格 ui->tableView->setShowGrid(false); // 单击选择一行 ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // 只允许选择单行 ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); // 设置隔一行变一颜色,即:一灰一白 //ui->tableView->setAlternatingRowColors(true); //ui->tableView->resizeColumnsToContents(); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableView->setVerticalScrollMode(QAbstractItemView::ScrollPerItem); ui->tableView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); ui->tableView->verticalHeader()->hide(); // 固定行高 ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); ui->tableView->verticalHeader()->setDefaultSectionSize(50); //ui->tableView->horizontalHeader()->hide(); // 最后一列填充 ui->tableView->horizontalHeader()->setStretchLastSection(true); ui->tableView->horizontalHeader()->setHighlightSections(false); // 自适应 ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //启用表排序 ui->tableView->setSortingEnabled(true); ui->tableView->setAutoScroll(true); }
详细描述
QTableView类提供了一个表视图的默认模型/视图实现。QTableView实现了一个表视图,用于显示来自模型的项。使用了Qt的model/view体系结构提供的更灵活的方法。
QTableView类是模型/视图类之一,是Qt model/view框架的一部分。QTableView实现了由QAbstractItemView类定义的接口,允许它显示由QAbstractItemModel类派生的模型提供的数据。
该表有一个可以使用verticalHeader()函数获得的垂直表头,以及一个可以通过horizontalHeader()函数获得的水平表头。表中每一行的高度可以通过使用rowHeight()找到;类似地,可以使用columnWidth()找到列的宽度。因为它们都是普通的小部件,所以可以使用它们的hide()函数来隐藏它们中的任何一个。
可以使用hideRow()、hideccolumn()、showRow()和showColumn()隐藏和显示行和列。它们可以通过selectRow()和selectColumn()来选择。该表将根据showGrid属性显示一个网格。
表视图中显示的项与其他项视图中的项目一样,都是使用标准委托呈现和编辑的。而,对于某些任务,有时将小部件插入到表中会很有用。小部件使用setIndexWidget()函数为特定的索引设置,使用indexWidget()检索。
对于某些特殊形式的表,能够在行和列索引以及小部件坐标之间进行转换是很有用的。rowAt()函数提供了指定行视图中的y坐标;行索引可以使用rowViewportPosition()获得相应的y坐标。columnnAt()和columnViewportPosition()函数提供了x坐标和列索引之间等效的转换操作。
属性文档
无论左上角的按钮是否被启用,此属性都将保持不变。如果该属性为true,则表视图左上角的按钮是启用的。单击此按钮将选择表格视图中的所有单元格。默认情况下,此属性为true。这个属性是在Qt 4.3中引入的。
bool isCornerButtonEnabled() const
void setCornerButtonEnabled(bool enable)
gridStyle : Qt::PenStyle
此属性保存用于绘制网格的钢笔样式。这个属性保存了绘制网格时使用的样式。
Qt::PenStyle gridStyle() const
void setGridStyle(Qt::PenStyle style)
此属性保存是否显示网格。如果此属性为真,则为表绘制网格;如果属性为false,则不绘制网格。默认值为true。
bool showGrid() const
void setShowGrid(bool show)
此属性保存是否启用排序。如果该属性为真,则表示对表启用排序。如果该属性为false,则不启用排序。缺省值为false。
注:使用setSortingEnabled()将该属性设置为true会立即触发对sortByColumn()的调用,该调用使用当前的排序部分和顺序。这个属性是在Qt 4.2中引入的。 bool isSortingEnabled() const
void setSortingEnabled(bool enable)
此属性保存项文本换行策略。如果该属性为真,则在需要换行的地方对条目文本进行换行;否则,它根本就没有被包装。默认情况下,此属性为true。注:即使启用了换行,单元格也不会展开以适合所有文本。省略号将根据当前的textElideMode被插入。这个属性是在Qt 4.3中引入的。
bool wordWrap() const
void setWordWrap(bool on)
成员函数
int QTableView::columnAt(int x) const
返回内容坐标中给定x坐标x所在的列。注意:如果给定的坐标无效(没有列),这个函数返回-1。
[protected slot] void QTableView::columnCountChanged(int oldCount, int newCount)
每当添加或删除列时,都会调用这个插槽。以前的列数由oldCount指定,新的列数由newCount指定。
[protected slot] void QTableView::columnMoved(int column, int oldIndex, int newIndex)
调用这个插槽来更改表视图中给定列的索引。旧索引由oldIndex指定,新索引由newIndex指定。
[protected slot] void QTableView::columnResized(int column, int oldWidth, int newWidth)
调用这个槽来改变给定列的宽度。旧的宽度由oldWidth指定,新宽度由newWidth指定。
int QTableView::columnSpan(int row, int column) const
返回表元素在(row, column)处的列范围。缺省值为1。该函数是在Qt 4.2中引入的。
int QTableView::columnViewportPosition(int column) const
返回给定列的内容坐标中的x坐标。
int QTableView::columnWidth(int column) const
返回给定列的宽度。
[virtual protected] void QTableView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
重新实现从QAbstractItemView: currentChanged()。
[slot] void QTableView::hideColumn(int column)
隐藏给定的列。
[slot] void QTableView::hideRow(int row)
隐藏给定行。
QHeaderView *QTableView::horizontalHeader() const
返回表视图的水平表头。etHorizontalHeader(), verticalHeader(), QAbstractItemModel::headerData().
[virtual protected] int QTableView::horizontalOffset() const
重新实现从QAbstractItemView: horizontalOffset()。返回表视图中项的水平偏移量。
注意,表视图使用水平标题部分的位置来确定视图中列的位置。
[virtual] QModelIndex QTableView::indexAt(const QPoint &pos) const
重新实现从QAbstractItemView: indexAt()。返回与表项在内容坐标中位置pos对应的模型项的索引位置。
bool QTableView::isColumnHidden(int column) const
如果给定的列是隐藏的,则返回true;否则返回false。
[virtual protected] bool QTableView::isIndexHidden(const QModelIndex &index) const
重新实现从QAbstractItemView: isIndexHidden()。
bool QTableView::isRowHidden(int row) const
如果给定的行是隐藏的,则返回true;否则返回false。
[virtual protected] QModelIndex QTableView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
重新实现从QAbstractItemView: moveCursor()。使用修饰符提供的信息,根据给定的cursorAction移动光标。
[slot] void QTableView::resizeColumnToContents(int column)
根据用于呈现列中每个项的委托的大小提示调整给定列的大小。
注意:只有可见的列将被调整大小。重新实现sizeHintForColumn()来调整隐藏列的大小。
参见resizeColumnsToContents(), sizeHintForColumn(),和QHeaderView:: resizecontentprecision()。
[slot] void QTableView::resizeRowToContents(int row)
根据用于呈现行中每个项目的委托的大小提示调整给定行的大小。
参见resizeRowsToContents(), sizeHintForRow(),和QHeaderView:: resizecontentprecision()。
[slot] void QTableView::resizeRowsToContents()
根据用于呈现行的每个项的委托的大小提示调整所有行的大小。
int QTableView::rowAt(int y) const
返回内容坐标中给定y坐标y所在的行。注意:如果给定的坐标无效(没有行),这个函数返回-1
protected slot] void QTableView::rowCountChanged(int oldCount, int newCount)
每当添加或删除行时,就调用这个槽。以前的行数由oldCount指定,新的行数由newCount指定。
int QTableView::rowHeight(int row) const
返回给定行的高度。
[protected slot] void QTableView::rowMoved(int row, int oldIndex, int newIndex)
调用这个槽来更改表视图中给定行的索引。旧索引由oldIndex指定,新索引由newIndex指定。
void QTableView::setHorizontalHeader(QHeaderView *header)
将要用于水平标题的小部件设置为标题。
[virtual] void QTableView::setModel(QAbstractItemModel *model)
重新实现从QAbstractItemView: setModel()。设置模型
void QTableView::setRowHeight(int row, int height)
设置行高度
void QTableView::setVerticalHeader(QHeaderView *header)
将要用于垂直标题的小部件设置为标题
void QTableView::sortByColumn(int column, Qt::SortOrder order)
按照给定的顺序,根据给定列中的值对模型进行排序。
QHeaderView *QTableView::verticalHeader() const
返回表视图的垂直标题