QT:控制元件精講(二)單元檢視Item Views
Qt Creator有4種Item Views。如圖
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 ¤t,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 ¤t,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 ®ion)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 ¤t,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 ¤t,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的預覽元件。