天天看点

Qt控件精讲二:单元视图

Qt Creator有4种Item Views。如图
Qt控件精讲二:单元视图
View Widget的Qt类和名称介绍如下表:
控件类 控件名 中文名
QListView ListView 列表视图
QTreeView TreeView 树形视图
QTableView TableView 表格
QColumnView ColumnView 列视图

一、ListView控件

1.控件位置:Item Views->ListView

2.控件介绍:列表视图,继承自QAbstractItemView。ListView是基于模型的列表/图标视图,为Qt的模型/视图结构提供了更灵活的方式。

3.控件属性设置:

(1)name:该控件对应源代码中的名称。

(2)font:设置视图内字体。

(3)batchSize:如果将layoutMode设置为Batched,则这个属性保存批量处理的规格。

(4)layoutModel:项目的布局模式。

(5)modeColumn:模型中可见的类,默认情况下,置为0,表述模型中第一列可见。

(6)viewModel:保存该ListView的视图模型。

4.常用成员函数:

(1)QListView::QListView(QWidget *parent = 0)

构造一个父对象为parent的ListView。

(2)void QListView::currentChanged(const QModelIndex &current,const QModelIndex &previous)[virtual protected]

把current定位当前项目,previous是以前的项目。

(3)void QListView::dataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight)[virtual protected]

更改模型中项目topLeft到bottomRight。

(4)QModelIndex QListView::indexAt(const QPoint &p)const [virtual]

返回坐标点p处项目的模型索引。

(5)void QListView::rowsInserted(const QModelIndex &parent,int start,int end)[virtual protected]

插入新行,新行的父母是parent,从start到end的所有项目。

(6)QModelIndexList QListView::selectedIndexes()const[virtual protected]

返回所有选中的非隐藏的项目的模型索引。

二、TreeView控件 

1.控件位置:Item View->TreeView

2.控件介绍:树形视图,继承自QAbstractItemView,是基于模型的列表/图标视图,也是Qt模型/视图框架的一部分。

3.控件属性设置选项:

(1)name:该控件对应源代码中的名称。

(2)font:设置该控件内所有文本的字体。

(3)sortingEnable:项目是否排序。

4.常用成员函数:

(1)QTreeView::QTreeView(QWidget *parent = 0)

构造一个父对象为parent的TreeView。

(2)void QTreeView::collapse(const QModena &index)[slot]

折叠模型索引为index的项目

(3)void QTreeView::collapseAll()[slot]

折叠所有项目

(4)int QTreeView::columnAt(int x)const

返回x坐标处的列。

(5)void QTreeView::columnCountChanged(int oldCount,int newCount)[protected slot]

通知树形视图中的列数,从oldCount改变到newCount。

(6)void QTreeView::currentChanged(const QModelIndex &current,const QModelIndex &previous)[virtual protected]

把current定为当前项目,previous是以前的当前项目

(7)void QTreeView::dataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight)[virtual]

更改模型中项目topLeft到bottomRight。

(8)void QTreeView::drawBranches(QPainter *painter,const QRect &rect,const QModelIndex &index)const [virtual protected[

在项目index的同一行,用painter绘制指定的rect矩形分支。

(9)void QTreeView::drawRow(QPainter *painter,const QStyleOptionViewItem &option,const QModelIndex &index)const [virtual protected]

用painter绘制新行,新行包含模型索引 为index的项目,option是如何显示项目。

(10)void QTreeView::drawTree(QPainter *painter,const QRegion &region)const [protected]

用painter在区域region绘制树

(11)void QTreeView::expand(const QModelIndex &index)[slot]

展开模型索引为index的项目。

(12)void QTreeView::expandAll()[slot]

展开所有的项目

(13)void QTreeView::expandToDepth(int depth) [slot]

展开树形视图中的项目,深度为depth

(14)QHeaderView *QTreeView::header()const

返回该树形视图的header

(15)QModelIndex QTreeView::indexAbove(const QModelIndex &index)const

返回模型索引index的上一个索引

(16)QModelIndex QTreeView::indexAt(const QPoint &point)const [virtual]

返回点point处项目的模型索引

(17)QModelIndex QTreeView::indexBelow(const QModelIndex &index)const

返回模型索引index的下一个索引

(18)bool QTreeView::isExpanded(const QModelIndex &index)const

如果模型索引index处的项目是展开着的,返回true,否则返回false

(19)void QTreeV::rowsInserted(const QModelIndex &parent,int start,int end)[virtual protected]

插入新行,新行的父母是parent,包括从start到end的所有项目。

(20)void QTreeView::rowsRemoved(const QModelIndex &parent,int start,int end)[protected slot]

删除行,行的父母是parent,包括从start到end的所有项目

(21)void QTreeView::selectAll()[virtual]

设置所有的项目都是选择状态

(22)QModelIndexList QTreeView::selectedIndexes()const [virtual protected]

返回所有选中和非隐藏的项目的模型索引

(23)void QTreeView::setHeader(QHeaderView *header)

设置该TreeView的标题为header

(24)void QTreeView::sortByColumn(int column,QT::SortOrder order)

对列column按order进行排序

三、TableView控件

1.控件位置:Item View->TableView
2.控件介绍:表格视图,是一个模型/视图结构的表视图实现,用来显示模型的项目。它提供了QTable类提供的标准表格。是Qt的模型/视图框架的一部分。由QAbstractItemView类定义的接口来实现,使其能够显示由QAbstractItemModel类派生的模型提供的数据。
3.控件属性设置选项:

(1)name:该控件对应源代码中的名称

(2)font:设置表格内部的字体

(3)cornerButtonEnabled:左上角的按钮是否有用

(4)gridStyle:表格的格式

(5)showGrid:是否显示网格,值为true,显示,否则不显示

(6)sortingEnabled:是否对项目排序

4.常用成员函数

(1)QTableView::QTableView(QWidget *parent = 0)

构造一个父对象为parent的TableView

(2)void QTableView::clearSpans()

删除该TableView中的所有行和列的跨度

(3)int QTableView::columnAt(int x)const

返回坐标x处的列,如果坐标处没有项目则返回-1

(4)int QTableView::columnSpan(int row,intcolumn)const

返回行row、列column处的行跨度

(5)void QTableView::currentChanged(const QModelIndex &current,const QModelIndex &previous)[virtual protected]

把current指定为当前项目,previous是以前的项目

(6)QHeaderView *QTableView::horizontalHeader()const

返回该TableView的水平标题

(7)QModelIndex QTableView::indexAt(const QPoint *pos)const [virtual]

返回点pos处项目的模型索引

(8)int QTableView::rowAt(int y)const

返回坐标y处的行,如果坐标处没有项目则返回-1

(9)int QTableView::rowSpan(int row,int column)const

返回行row、列column处的列跨度

(10)void QTableView::selectcolumn(int column)[slot]

设置列column为选中状态

(11)void QTableView::selectRow(int row)[slot]

设置行row为选中状态

(12)QModelIndexList QTableView::selectedIndexes()const [virtual protected]

返回所有选中和非隐藏的项目的模型索引

(13)void QTableView::setHorizontalHeader(QHeaderView *header)

设置该TableView的水平标题为header

(14)void QTableView::setSpan(int row,int column,int rowSpanCount,int columnCount)

设置行row、列column处的行跨度为rowSpanCount、列跨度为columnSpanCount

(15)void QTableView::setVerticalHeader(QHeaderView *header)

设置该TableView的垂直标题为header

(16)void QTableView::showColumn(int column)[slot]

显示列column

(17)void QTableView::showRow(int row)[slot]

显示行row

(18)QHeaderView *QTableView::verticalHeader()const

返回TableView的垂直标题

四、ColumnView控件

1.控件位置:Item View->ColumnView 2.控件介绍:列视图 3.控件属性设置选项:
(1)name:该控件对应源代码中的名字 (2)font:设置表格内部的字体
4.常用成员函数

(1)QColumnView::QColumnView(QWidget *parent = 0)

构造一个父对象为parent的ColumnView

(2)QAbstractItemView * QColumnView::createColumn(const QModelIndex *index)[virtual protected]

index是视图的根模型索引,返回新的视图

(3)void QColumnView::currentChanged(const QModelIndex &current,const QModelIndex &previous)[virtual protected]

把current指定为当前项目,previous是以前的当前项目

(4)QModelIndex QColumnView::indexAt(cosnt QPoint &point)const [virtual]

返回点pos处项目的索引模型

(5)QWidget *QColumnView::previewWidget()const

返回预览组件,如果没有则返回0

(6)void QColumnView::rowsInserted(const QModelIndex &parent,int start,int end)[virtual protected]

插入新行,新行的父母是parent包括从start到end的所有项目

(7)void QColumnView::selectAll()[virtual]

设置该ColumnView中的所有项目为选中状态

(8)void QColumnView::setPreviewWidget(QWidget *widget)

设置widget为该columnView的预览组件。

继续阅读