Qt应用开发(基础篇)——表格视图 QTableView

一、前言

        QTableView类继承于QAbstractItemView类,提供了一个表格视图的模型。

        视图基类 QAbstractItemView

        QTableView默认为Model/View实现。

//绑定view和model
QStandardItemModel *model = new QStandardItemModel();
ui->tableView->setModel(model);
 
//view设置标题栏
model->setHorizontalHeaderLabels(QStringList()<<"log");
//view设置标题栏缩放策略
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
 
//model插入数据
for(int i = 0 ; i<10 ;i++)
{
    int newRow = model->rowCount();//获取当前行数
    model->insertRow(newRow, QModelIndex());//插入一行
    model->setData(model->index(newRow, 0),"information");//插入数据
}

        QTableView表格视图带有横向和纵向的滚动条,当水平方向的内容放不下的时候,会自动显示出来。滚动条的信息保存在QScrollBar中,使用horizontalScrollBar()verticalScrollBar()获取部件类,配合QSS样式表设置滚动条的样式信息。

.QScrollBar:vertical{
    width:10px;
    background-color:#e9e9e9;
    padding-top:10px;
    padding-bottom:10px;
}
.QScrollBar:horizontal{
    height:10px;
    background-color:#e9e9e9;
    padding-left:10px;
    padding-right:10px;
}

        QTableView表格视图带有横向顶部和纵向左侧的头信息,头信息使用QHeaderView封装,使用verticalHeader()horizontalHeader()得到它们,顶部头一般用来显示列描述,左侧头一般用来显示行序号,默认显示,也可以关闭它们。

        QTableView表格视图也提供了很多常用的公共方法,用来设置表格的样式,rowHeight()得到行高,columnWidth()得到列宽,隐藏和显示某行某列使用hideRow(), hideColumn(), showRow()showColumn()

        QTableView表格视图和其他视图一样,支持使用标准委托来呈现和编辑,这在父类QAbstractItemView已经讲过,如果只是需要在某一个单元显示小部件,比如你想要某一行显示一个下拉框,而不是全部行都需要,那么你只需要使用setIndexWidget()indexWidget()来特殊设置和获取并操作即可。

二、QTableView

1、属性

1)cornerButtonEnabled

        该属性表示是否启用左上角的按钮,默认为true,单击此按钮将选择表视图中的所有单元格,当然前提是selectionMode不能设置为NoSelection。

bool isCornerButtonEnabled() const
void setCornerButtonEnabled(bool enable)
2)gridStyle

        该属性表示网格线的样式。       

Qt::PenStyle gridStyle() const
void setGridStyle(Qt::PenStyle style)

3)showGrid

        该属性表示是否显示网格线。

bool showGrid() const
void setShowGrid(bool show)
4)sortingEnabled

        该属性表示是否启用排序,该属性默认为false。

bool isSortingEnabled() const
void setSortingEnabled(bool enable)
5)wordWrap

        该属性表示列表中是否文本换行,默认为true,则项目文本在必要的换行处换行。

        这里要注意就算换行了,也不会展开单元格来为文本腾出空间。需要设置textElideMode(父类属性)来设置是否为不显示的文本显示“...”。

bool wordWrap() const
void setWordWrap(bool on)

2、公共函数

1)clearSpans

        清空全部行和列设置的跨度。

void clearSpans()
2)setSpan

        设置某行和列的行跨度和列跨度。

void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
3)columnSpan

        返回某单元的列跨度,默认为1。

int columnSpan(int row, int column) const
4)rowSpan

        返回某单元的行跨度,默认为1。

int rowSpan(int row, int column) const
5)horizontalHeader

        返回横向标题栏,封装在QHeaderView中。

QHeaderView *horizontalHeader() const
 6)setHorizontalHeader

        设置横向标题栏,封装在QHeaderView中。

void setHorizontalHeader(QHeaderView *header)
7)verticalHeader

        返回纵向标题栏,封装在QHeaderView中。

QHeaderView *verticalHeader() const
8setVerticalHeader

        设置纵向标题栏,封装在QHeaderView中。

void setVerticalHeader(QHeaderView *header)
9)columnWidth

        返回给定的列的宽度。

int columnWidth(int column) const
10)setColumnWidth

       设置给定的列的宽度。

void setColumnWidth(int column, int width)
11)rowHeight

        返回给定的行的高度。

int rowHeight(int row) const
12)rowHeight

        设置给定的行的高度。

void setRowHeight(int row, int height)
13)columnViewportPosition

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

int columnViewportPosition(int column) const
14)isColumnHidden

        返回给定的列是否隐藏。

bool isColumnHidden(int column) const
15)setColumnHidden

       设置某行是否隐藏。

void setColumnHidden(int column, bool hide)
16)isRowHidden

        返回给定的行是否隐藏。

bool isRowHidden(int row) const
17)setRowHidden

       设置某行是否隐藏。

void setRowHidden(int row, bool hide)
18)rowAt

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

 int rowAt(int y) const
19)columnAt

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

int columnAt(int x) const
20)setRowHeight

       设置某单元格的高度。

void setRowHeight(int row, int height)

3、公共槽函数

1)hideColumn

        隐藏给定的列。

void hideColumn(int column)
2)hideRow

        隐藏给定的行。

void hideRow(int row)
3)showColumn

        显示给定的列。

void showColumn(int column)
4)showRow

        显示给定的行。

void showRow(int row)
5)resizeColumnToContents

        调整给定列的大小,根据该列中委托的sizeHint。

 void resizeColumnToContents(int column)
6)resizeColumnsToContents

        调整全部列的大小,根据每个项中委托的sizeHint。

void resizeColumnsToContents()
7)resizeRowToContents

        调整给定行的大小,根据该列行中委托的sizeHint。

void resizeRowToContents(int row)
8)resizeRowsToContents

        调整全部行的大小,根据每个行中委托的sizeHint。

void resizeColumnsToContents()
9)selectColumn

        选中给定的一列。

void selectColumn(int column)
10)selectRow

        选中给定的一行。

void selectRow(int row)
11)sortByColumn

        对某一列进行排序。

void sortByColumn(int column, Qt::SortOrder order)
enum Qt::SortOrder描述
Qt::AscendingOrder项目按升序排序
Qt::DescendingOrder项目按降序排序

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波塞冬~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值