QTableView类继承于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()来特殊设置和获取并操作即可。
该属性表示是否启用左上角的按钮,默认为true,单击此按钮将选择表视图中的所有单元格,当然前提是selectionMode不能设置为NoSelection。
- bool isCornerButtonEnabled() const
- void setCornerButtonEnabled(bool enable)
该属性表示网格线的样式。
- Qt::PenStyle gridStyle() const
- void setGridStyle(Qt::PenStyle style)
该属性表示是否显示网格线。
- bool showGrid() const
- void setShowGrid(bool show)
该属性表示是否启用排序,该属性默认为false。
- bool isSortingEnabled() const
- void setSortingEnabled(bool enable)
该属性表示列表中是否文本换行,默认为true,则项目文本在必要的换行处换行。
这里要注意就算换行了,也不会展开单元格来为文本腾出空间。需要设置textElideMode(父类属性)来设置是否为不显示的文本显示“...”。
- bool wordWrap() const
- void setWordWrap(bool on)
清空全部行和列设置的跨度。
void clearSpans()
设置某行和列的行跨度和列跨度。
void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)
返回某单元的列跨度,默认为1。
int columnSpan(int row, int column) const
返回某单元的行跨度,默认为1。
int rowSpan(int row, int column) const
返回横向标题栏,封装在QHeaderView中。
QHeaderView *horizontalHeader() const
设置横向标题栏,封装在QHeaderView中。
void setHorizontalHeader(QHeaderView *header)
返回纵向标题栏,封装在QHeaderView中。
QHeaderView *verticalHeader() const
设置纵向标题栏,封装在QHeaderView中。
void setVerticalHeader(QHeaderView *header)
返回给定的列的宽度。
int columnWidth(int column) const
设置给定的列的宽度。
void setColumnWidth(int column, int width)
返回给定的行的高度。
int rowHeight(int row) const
设置给定的行的高度。
void setRowHeight(int row, int height)
返回给定列的内容坐标中的x坐标。
int columnViewportPosition(int column) const
返回给定的列是否隐藏。
bool isColumnHidden(int column) const
设置某行是否隐藏。
void setColumnHidden(int column, bool hide)
返回给定的行是否隐藏。
bool isRowHidden(int row) const
设置某行是否隐藏。
void setRowHidden(int row, bool hide)
返回给定的内容坐标中y坐标所在的行。
int rowAt(int y) const
返回给定的内容坐标中x坐标所在的列。
int columnAt(int x) const
设置某单元格的高度。
void setRowHeight(int row, int height)
隐藏给定的列。
void hideColumn(int column)
隐藏给定的行。
void hideRow(int row)
显示给定的列。
void showColumn(int column)
显示给定的行。
void showRow(int row)
调整给定列的大小,根据该列中委托的sizeHint。
void resizeColumnToContents(int column)
调整全部列的大小,根据每个项中委托的sizeHint。
void resizeColumnsToContents()
调整给定行的大小,根据该列行中委托的sizeHint。
void resizeRowToContents(int row)
调整全部行的大小,根据每个行中委托的sizeHint。
void resizeColumnsToContents()
选中给定的一列。
void selectColumn(int column)
选中给定的一行。
void selectRow(int row)
对某一列进行排序。
void sortByColumn(int column, Qt::SortOrder order)
enum Qt::SortOrder 描述 Qt::AscendingOrder 项目按升序排序 Qt::DescendingOrder 项目按降序排序