Qt:QListWidget


0、說明

QListWidget指明一個基於Item的List Widget

 

構造

 

 QListWidgetQListView類似,都可以顯示一列Item,區別在於前者可以往其中增刪Item。

QListWidget的構造方法和其他Widgets的構造方法類似:

QListWidget *listWidget = new QListWidget(this);

選中

調用selectionMode()可以知道該ListWidget一次可以選中多少個Item,是否可以構造復雜的選項。調用setSelectionMode()可以設置該變量。

添加與移除

有兩種方法可以往List中增加Items:

添加單個Item

①構造Item時,指明所在ListWidget,就可以在創建完成后自動加進去;

    new QListWidgetItem(tr("Oak"), listWidget);
    new QListWidgetItem(tr("Fir"), listWidget);
    new QListWidgetItem(tr("Pine"), listWidget);

②構造Item,不指定所在ListWidget;等待ListWidget調用insertItem()添加。

    QListWidgetItem *newItem = new QListWidgetItem;
    newItem->setText(itemText);
    listWidget->insertItem(row, newItem);

添加多個Items

如果有多個Items,可以用insertItems()

移除:takeItem()

統計:count()

當前Item

通過currentItem()得到當前Item,通過setCurrentItem()改變當前Item。當然我們也能通過鼠標或鍵盤直接選中不同的Item。

每當當前Item改變時,發送currentItemChanged()信號,信號中保存有修改前后的兩個Item

1、模塊和加載項

Header: #include <QListWidget>
qmake: QT += widgets
Inherits: QListView

2、構造

QListWidget(QWidget *parent = nullptr)  

3、實例字段

 

字段

說明

getter、setter

信號

int count 一共多少Item count()  
int currentRow 當前行

currentRow()

setCurrentRow(int row)

currentRowChanged(int currentRow)
bool sortingEnabled 可否排序

isSortingEnabled()

setSortingEnabled(bool enable)

 

 

6、實例方法

返回值類型

方法

說明

void

addItem(const QString &label)

addItem(QListWidgetItem *item)

在List末尾加入一個Item(多次加入同一個Item會導致不可預知的錯誤)
void addItems(const QStringList &labels) 在List末尾插入若干text為labels中的Label的Item
void closePersistentEditor(QListWidgetItem *item) 關閉給定Item上的編輯器
int count() 一共多少個Item
QListWidgetItem * currentItem() 當前Item
int currentRow() 當前Item所在行
void editItem(QListWidgetItem *item) 如果item可編輯,就開始編輯
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) 查找Text符合給定的text的Items
void

insertItem(int row, QListWidgetItem *item)

insertItem(int row, const QString &label)

在指定行插入Item
void insertItems(int row, const QStringList &labels) 在指定行插入多個Items
bool isPersistentEditorOpen(QListWidgetItem *item) item上的編輯器是否開啟
bool isSortingEnabled() 是否允許排序
QListWidgetItem * item(int row) 指定行上的Item
QListWidgetItem *

itemAt(const QPoint &p)

itemAt(int x, int y)

指定位置處的Item

該位置依賴於Widget的viewport()說明的坐標系

QWidget * itemWidget(QListWidgetItem *item) 返回一個Widget用於展示給定Item
void openPersistentEditor(QListWidgetItem *item) 在指定Item上打開編輯器
void removeItemWidget(QListWidgetItem *item) 移除用於展示給定Item而設置的Widget
int row(const QListWidgetItem *item) Item所在行
void selectedItems() 當前選中的Item
setCurrentItem(QListWidgetItem *item) 設置當前Item
setCurrentRow(int row) 設置當前行
setItemWidget(QListWidgetItem *item, QWidget *widget) 設置Widget用於展示給定Item
setSortingEnabled(bool enable)  
void sortItems(Qt::SortOrder order = Qt::AscendingOrder) 按照order指定的規則進行排序
QListWidgetItem * takeItem(int row) 提取並移除指定行的Item
QRect visualItemRect(const QListWidgetItem *item) 返回一個只包含給定Item的矩形框QRect

 

7、信號

信號

說明

currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) 每當List中的當前的Item改變時,參數分別標明改變前后的Item
currentRowChanged(int currentRow)

當前Item修改時發送該信號。currnetRow指明該Item所在行。

currentTextChanged(const QString &currentText) 當前Item修改時發送該信號。currnetText指明該Item的文本。
itemActivated(QListWidgetItem *item) 每當List中參數指明的Item激活(選中)時,發送該信號
itemChanged(QListWidgetItem *item) 每當List中參數指明的Item改變時,發送該信號
itemClicked(QListWidgetItem *item) 每當List中參數指明的Item被單擊時,發送該信號
itemDoubleClicked(QListWidgetItem *item) 每當List中參數指明的Item被雙擊時,發送該信號
itemEntered(QListWidgetItem *item) 每當鼠標焦點進入List中的某個Item時,發送該信號,參數指明這個Item
itemPressed(QListWidgetItem *item) 每當List中的某個Item被按時,發送該信號,參數指明這個Item
itemSelectionChanged() 每當選中的Item改變時發送該信號

 

8、槽

說明

clear() 清空List
scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) 上下滾動視圖,以保證item始終可見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM