天天看點

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的預覽元件。

繼續閱讀