1. 程式人生 > >QT:控制元件精講(三)單元元件 Item Widgets

QT:控制元件精講(三)單元元件 Item Widgets

    Qt Creator有3種Item Widgets。如下圖:


    Item Widgets介紹

    控制元件類     控制元件名     中文名
    QListWidget     List Widget     列表單元控制元件
    QTreeWidget     Tree Widget     樹形單元控制元件
    QTableWidget     Table Widget     表格單元控制元件

    一、ListWidget控制元件
    1.控制元件位置:Item Widget->ListWidget
    2.控制元件介紹:ListWidget繼承自QListView類,基於Item的列表控制元件。
    3.控制元件屬性設定選項:

        (1)name:該控制元件對應原始碼內的名稱
        (2)font:設定該表格內部的字型
        (3)count:保持專案的數目
        (4)currentRow:保持當前專案的行
        (5)sortingEnabled:是否對item排序

    4.常用成員函式:

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

        構造父物件為parent的ListWidget

        (2)void QListWidget::addItem(QListWidgetItem *item)

        新增專案item

        (3)void QListWidget::addItem(const QString &label)

        新增一個新的專案,在新新增的專案中新增label標籤

        (4)void QListWidget::addItems(const QStringList &labels)

        新增一列專案

        (5)void QListWidget::clear()[slot]

        清除該ListWidget中的所有專案

        (6)QListWidgetItem *QListWidget::currentItem()const

        返回當前活動的專案

        (7)void QListWidget::editItem(QListWidgetItem *item)

        如果專案item是可編輯的,開始編輯專案item

        (8)QList<QListWidgetItem *>QListWidget::findItems(const QString &text,Qt::MatchFlags flags)const

        查詢匹配字串text的專案,並返回查詢結果

        (9)void QListWidget::insertItem(int row,QListWidgetItem * item)

        在行row處插入專案item

        (10)void QListWidget::insertItem(int row,const QString &label)

        這是一個過載函式,功能同(9),在行row處插入標籤為label的新專案

        (11)void QListWidget::insertItem(int row,const QStringList &labels)

        在行row處插入一列專案

        (12)QListWidgetItem *QListWidget::item(int row)const

        返回行row處的專案,如果行row處沒有專案則返回0

        (13)QListWidgetItem *QListWidget::itemAt(const QPoint &p)const

        返回點p處的專案

        (14)QListWidgetItem *QListWidget::itemAt(int row,int y)const

        返回座標(x,y)處的專案

        (15)QWidget *QListWidget::itemWidget(QListWidgetItem *item)const

        返回專案item處顯示的控制元件

        (16)QListWidgetItem *QListWidget::takeItem(int row)

        移除行row處的專案,並返回專案控制元件

        (17)void QListWidget::removeItemWidget(QListWidgetItem *item)

        移除專案item處的控制元件

        (18)int QListWidget::row(const QListWidgetItem *item)cosnt

        返回專案item所在的行

        (19)QList<QListWidgetItem*> QListWidget::selectedItems()const

        返回所有被選中的專案的控制元件

        (20)void QListWidget::setcurrentItem(QListWidgetItem *item)

        設定專案item為當前專案

        (21)void QListWidget::setItemWidget(QListWidgetItem *item,QWidget *widget)

        設定控制元件widget為專案item的顯示控制元件

        (22)void QListWidget::setItemWidget(QListWidgetItem *item,QWidget *widget)

        (23)void QListWidget::sortItems(Qt::SortOrder order = Qt::AscendingOrder)

        把專案按照order進行排序

    二、TreeWidget控制元件
    1.控制元件位置:Item Widget->TreeWidget
    2.控制元件介紹:樹形單元控制元件,繼承自QTreeView類,是樹形檢視使用預定義的模型,他也是基於模型/檢視結構的控制元件,為方便開發人員使用樹形檢視,可以使用這個控制元件來建立簡單地樹形結構列表
    3.控制元件屬性設定選項:

        (1)name:同上
        (2)font:同上
        (3)columnCount:儲存該TreeWidget的列數

    4.常用成員函式

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

        構造一個父物件為parent的TreeWidget

        (2)void QTreeWidget::addTopLevelItem(QTreeWidgetItem * item)

        在該TreeWidget中追加item為頂級專案

        (3)void QTreeWidget::addTopLevelItems(const QList<QTreeWidgetItem*> &items)

        把items中的專案作為頂級專案追加到該TreeWidget中

        (4)void QTreeWidget::clear()[slot]

        清除該TreeWidget中的所有專案

        (5)void QTreeWidget::collapseItem(const QTreeWidgetItem *item)[slot]

        摺疊專案item

        (6)int QTreeWidget::currentColumn()const

        返回當前活動列

        (7)QTreeWidgetItem *QTreeWidget::currentItem()const

        返回當前活動專案

        (8)void QTreeWidget::editItem(QTreeWidgetItem *item,int column = 0)

        如果列column的item是可編輯的,開始編輯

        (9)void QTreeWidget::expandItem(const QTreeWidgetItem *item)[slot]

        展開專案

        (10)QList<QTreeWidgetItem*> QTreeWidget::findItems(const QString &text,Qt::MatchFlags flags,int column = 0)const

        查詢匹配字串的text的專案,並返回查詢結果

        (11)QTreeWidgetItem *QTreeWidget::headerItem()const

        返回頭專案

        (12)QModelIndex QTreeWidget::indexFromItem(QTreeWidgetItem *item,int column = 0)const [protected]

        返回列column的專案item模型索引

        (13)int QTreeWidget::indexOfTopLevelItem(QTreeWidgetItem *item)const

        返回頂級專案item的模型索引,如果item不存在返回-1

        (14)int QTreeWidget::sortColumn()const
        返回排序的列

        (15)void QTreeWidget::sortItems(int column,Qt::SortOrder order)

        對列column的專案按照order進行排序

        (16)QTreeWidgetItem *QTreeWidget::itemAbove(const QTreeWidgetItem *item)const

        返回item的上一個專案

        (17)QTreeWidgetItem *QTreeWidget::itemAt(const QPoint &p) const

        返回點p處的專案

        (18)QTreeWidgetItem *QTreeWidget::itemAt(int x,int y)const

        返回座標(x,y)處的專案

        (19)void QTreeWidget::setItemWidget(QTreeWidgetItem *item,int column,QWidget *widget)

        設定控制元件widget為專案item的顯示控制元件,專案item在列column中

        (20)QTreeWidgetItem *QTreeWidget::itemBelow(const QTreeWidgetItem *item)const

        返回item的下一個專案

        (21)QWidget *QTreeWidget::itemWidget(QTreeWidgetItem *item,int column)const

        返回列column中的專案item顯示控制元件

        (22)void QTreeWidget::removeItemWidget(QTreeWidgetItem *item,int column)

        移除列column中的專案item的顯示控制元件

        (23)QList<QTreeWidgetItem *> QTreeWidget::selectItems()const

        返回所有選中狀態的專案

        (24)void QTreeWidget::setCurrentItem(QTreeWidgetItem *item)

        設定item為當前專案

        (25)void QTreeWidget::setCurrentItem(QTreeWidgetItem *item,int column)

        設定列column的專案item為當前專案

        (26)void QTreeWidget;:setHeaderItem(QTreeWidgetItem *item)

        設定item為該TreeWidget的頭專案

        (27)void QTreeWidget::setHeaderLabel(const QString &label)

        設定label為頭標題

        (28)QTreeWidgetItem *QTreeWidget::topLevelItem(int index)cosnt

        返回所有index的頂級專案

    三、TableWidget控制元件
    1.控制元件位置:Item Widget->Table Widget
    2.控制元件介紹:表格單元控制元件
    3.控制元件屬性設定選項:

        (1)name:同上
        (2)font:同上
        (3)columnCount:儲存列的數目
        (4)rowCount:儲存行的數目

        4.常用成員函式

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

        構造一個父物件為parent的TableWidget

        (2)QTableWidget::QTableWidget(int rows,int columns,QWidget *parent = 0)

        構造一個rows行,columns列,父物件為parent的TableWidget控制元件

        (3)QWidget *QTableWidget::cellWidget(int row,int column)const

        返回行row,列column的單元格處的控制元件

        (4)void QTableWidget::clear()[slot]

        刪除該TreeWidget中的所有專案

        (5)void QTableWidget::clearContents()[slot]

        刪除該TreeWidget中除了header外的所有專案

        (6)int QTableWidget::column(const QTableWidgetItem *item)const

        返回專案item所在的列

        (7)int QTableWidget::currentColumn()const

        返回當前活動的列

        (8)QTableWidgetItem *QTableWidget::currentItem()const

        返回當前活動的專案

        (9)int QTableWidget::currentRow()const

        返回當前活動的行

        (10)void QTableWidget::editItem(QTableWidgetItem *item)

        如果item是可編輯的,開始編輯item

        (11)QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text,Qt::MatchFlags flags)const

        查詢匹配字串text的專案,並返回查詢結果

        (12)void QTableWidget::insertColumn(int column)[slot]

        在列column處插入新列

        (13)void QTableWidget::insertRow(int row)[slot]

        在行row處插入新行

        (14)QTableWidgetItem *QTableWidget::item(int row,int column)const

        返回行row、列column處的專案

        (15)QTableWidgetItem *QTableWidget::itemAt(const QPoint &point)const

        返回點point處的專案

        (16)QTableWidgetItem *QTableWidget::itemAt(int ax,int ay)const

        返回座標(ax,ay)處的專案

        (17)void QTableWidget::removeCellWidget(int row,int column)

        移除行row、列column單元格處的顯示控制元件

        (18)void QTableWidget::removeColumn(int column)[slot]

        移除列column

        (19)void QTableWidget::removerRow(int row)[slot]

        移除行row

        (20)int QTableWidget::row(const QTableWidgetItem *item)cosnt

        返回item的行

        (21)QList<QTableWidgetItem *> QTableWidget::selectedItems()

        返回所有選中狀態的專案

        (22)void QTableWidget::setCellWidget(int row,int column,QWidget *widget)

        設定行row、列column處的顯示控制元件為widget。

        (23)void QTableWidget::setCurrentCell(int row,int column)

        設定行row,列column處的單元格為當前活動單元格

        (24)void QTableWidget::setCurrentItem(QTableWidgetItem *item)

        設定專案item為當前活動專案

        (25)void QTableWidget::setHorizontalHeaderItem(int column,QTableWidgetItem *item)

        設定專案item為列column的水平頭專案,功能同setVerticalHeaderItem()

        (26)void QTableWidget::setHorizontalHeaderLabels(const QStringList *labels)

        設定水平標題為labels,功能同setVerticalHeaderLabels()

        (27)void QTableWidget::setItem(int row,int column,QTableWidgetItem *item)

        設定行row、列column的單元格的專案為item

        (28)void QTableWidget::sortItems(int column,Qt::SortOrder order = Qt::AscendingOrder)

        對列column按照order進行排序

        (29)QTableWidgetItem *QTableWidget::takeHorizonalHeaderItem(int column)

        移除列column的水平頭專案,功能同takeVerticalHeaderItem()

        (30)QTableWidgetItem *QTableWidget::takeItem(int row,int column)

        移除行row、列column單元格處的專案

        (31)QTableWidgetItem *QTableWidget::verticalHeaderItem(int row)const

        返回行row的垂直頭專案