1. 程式人生 > >QT:控制元件精講(二)單元檢視Item Views

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