一、前言
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
8)setVerticalHeader
设置纵向标题栏,封装在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 项目按降序排序