qt -- QTableView

目录

例子使用:

详细描述

属性文档

成员函数


例子使用:

双击选中获取单元格的值:

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坐标和列索引之间等效的转换操作。

属性文档

cornerButtonEnabled : bool

无论左上角的按钮是否被启用,此属性都将保持不变。如果该属性为true,则表视图左上角的按钮是启用的。单击此按钮将选择表格视图中的所有单元格。默认情况下,此属性为true。这个属性是在Qt 4.3中引入的。
bool  isCornerButtonEnabled() const
void  setCornerButtonEnabled(bool enable)

 gridStyle : Qt::PenStyle

此属性保存用于绘制网格的钢笔样式。这个属性保存了绘制网格时使用的样式。
Qt::PenStyle   gridStyle() const
void  setGridStyle(Qt::PenStyle style)

showGrid : bool

此属性保存是否显示网格。如果此属性为真,则为表绘制网格;如果属性为false,则不绘制网格。默认值为true。
bool  showGrid() const
void  setShowGrid(bool show)

 sortingEnabled : bool

此属性保存是否启用排序。如果该属性为真,则表示对表启用排序。如果该属性为false,则不启用排序。缺省值为false。
注:使用setSortingEnabled()将该属性设置为true会立即触发对sortByColumn()的调用,该调用使用当前的排序部分和顺序。这个属性是在Qt 4.2中引入的。                                            bool  isSortingEnabled() const
void  setSortingEnabled(bool enable)

 wordWrap : bool

此属性保存项文本换行策略。如果该属性为真,则在需要换行的地方对条目文本进行换行;否则,它根本就没有被包装。默认情况下,此属性为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 &current, 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

返回表视图的垂直标题

 

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值