QListWedget控件使用指南

QListWedget公共函數

函數簽名功能描述
QListWidget(QWidget *parent = nullptr)構造函數,創建一個QListWidget對象,可指定父部件(默認為nullptr)。
virtual ~QListWidget()虛析構函數,釋放QListWidget對象及其資源。
void addItem(QListWidgetItem *item)向列表末尾添加一個已有的QListWidgetItem項。
void addItem(const QString &label)創建一個新項(QListWidgetItem)并添加至列表末尾,文本內容為label
void addItems(const QStringList &labels)批量創建新項并添加至列表末尾,文本內容為labels列表中的每個字符串。
void closePersistentEditor(QListWidgetItem *item)關閉與指定項關聯的持久編輯器(persistent editor)。
int count() const返回列表中項的總數。
QListWidgetItem *currentItem() const返回當前選中的項(若未選中則返回nullptr)。
int currentRow() const返回當前選中項的行號(從0開始計數,無選中項時返回-1)。
void editItem(QListWidgetItem *item)觸發指定項的編輯模式(例如用戶雙擊后的編輯狀態)。
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const根據text和匹配標志flags查找匹配的項,返回結果列表。
QModelIndex indexFromItem(const QListWidgetItem *item) const返回給定項的模型索引(QModelIndex),用于模型/視圖操作。
void insertItem(int row, QListWidgetItem *item)在指定行row插入一個已有的項。
void insertItem(int row, const QString &label)在指定行row創建一個新項并插入,文本內容為label
void insertItems(int row, const QStringList &labels)在指定行row插入多個新項,文本內容為labels列表中的每個字符串。
bool isPersistentEditorOpen(QListWidgetItem *item) const檢查指定項是否已打開持久編輯器,返回true表示已打開。
bool isSortingEnabled() const返回是否啟用了自動排序功能(true表示啟用)。
QListWidgetItem *item(int row) const返回指定行row的項(若行號無效返回nullptr)。
QListWidgetItem *itemAt(const QPoint &p) const返回位于坐標點p處的項(基于列表視口的坐標系)。
QListWidgetItem *itemAt(int x, int y) const返回位于坐標(x, y)處的項(基于列表視口的坐標系)。
QListWidgetItem *itemFromIndex(const QModelIndex &index) const從模型索引index獲取對應的項。
QWidget *itemWidget(QListWidgetItem *item) const返回與指定項關聯的自定義部件(若未設置返回nullptr)。
QList<QListWidgetItem *> items(const QMimeData *data) const從拖放操作的MIME數據data中解析出關聯的項列表(用于拖放事件處理)。
void openPersistentEditor(QListWidgetItem *item)為指定項打開持久編輯器(編輯器將一直顯示,直到手動關閉)。
void removeItemWidget(QListWidgetItem *item)移除與指定項關聯的自定義部件。
int row(const QListWidgetItem *item) const返回指定項的行號(從0開始計數,若項不存在返回-1)。
QList<QListWidgetItem *> selectedItems() const返回所有當前選中的項的列表。
void setCurrentItem(QListWidgetItem *item)設置指定項為當前選中項。
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)設置指定項為當前選中項,并使用command標志控制選擇行為(如選中、切換等)。
void setCurrentRow(int row)設置指定行row為當前選中行。
void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)設置指定行row為當前選中行,并使用command標志控制選擇行為。
void setItemWidget(QListWidgetItem *item, QWidget *widget)為指定項設置自定義部件widget(覆蓋項的默認顯示方式)。
void setSortingEnabled(bool enable)啟用或禁用自動排序功能(enabletrue時,添加項會自動按排序規則插入)。
void sortItems(Qt::SortOrder order = Qt::AscendingOrder)按指定順序(升序或降序)對所有項進行排序。
QListWidgetItem *takeItem(int row)移除并返回指定行row的項(項不會被刪除,可重新插入到其他位置)。
QRect visualItemRect(const QListWidgetItem *item) const返回指定項在列表視口中的可視區域矩形(坐標和尺寸)。

?QListWedget信號

信號簽名觸發條件與功能描述
void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)當當前選中項發生變化時觸發。current為新的當前項,previous為之前的當前項(可能為nullptr)。
void currentRowChanged(int currentRow)當當前選中項的行號發生變化時觸發。currentRow為新的行號(無選中項時為-1)。
void currentTextChanged(const QString &currentText)當當前選中項的文本發生變化時觸發。currentText為新的文本內容(無選中項時為空字符串)。
void itemActivated(QListWidgetItem *item)當用戶激活某個項(如雙擊或按回車鍵)時觸發。item為被激活的項。
void itemChanged(QListWidgetItem *item)當項的內容(如文本、圖標等)被修改時觸發。item為被修改的項。
void itemClicked(QListWidgetItem *item)當用戶單擊某個項時觸發。item為被點擊的項。
void itemDoubleClicked(QListWidgetItem *item)當用戶雙擊某個項時觸發。item為被雙擊的項。
void itemEntered(QListWidgetItem *item)當鼠標光標進入某個項的可視區域時觸發(通常用于懸停效果)。item為對應的項。
void itemPressed(QListWidgetItem *item)當用戶按下鼠標按鍵(未釋放)在某個項上時觸發。item為被按下的項。
void itemSelectionChanged()當選中項的集合發生變化(如選中、取消選中或切換)時觸發。此信號無參數。

?QListWidgetItem函數

函數簽名功能描述
QListWidgetItem(QListWidget *parent = nullptr, int type = Type)構造函數,創建一個空項,可指定父列表控件parent和項類型type(默認為Type)。
QListWidgetItem(const QString &text, QListWidget *parent = nullptr, int type = Type)構造函數,創建帶有文本text的項,可指定父列表控件和類型。
QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = nullptr, int type = Type)構造函數,創建帶有圖標icon和文本text的項,可指定父列表控件和類型。
QListWidgetItem(const QListWidgetItem &other)拷貝構造函數,復制另一個項other的屬性。
virtual ~QListWidgetItem()虛析構函數,釋放項的資源。
QBrush background() const返回項的背景畫刷(顏色或漸變)。
Qt::CheckState checkState() const返回項的勾選狀態(如未選中、部分選中、完全選中)。
virtual QListWidgetItem *clone() const虛函數,創建并返回當前項的副本。
virtual QVariant data(int role) const返回項中指定角色role(如文本、圖標、對齊等)對應的數據。
Qt::ItemFlags flags() const返回項的標志(如是否可選中、可編輯等)。
QFont font() const返回項的字體。
QBrush foreground() const返回項的前景畫刷(文本顏色)。
QIcon icon() const返回項的圖標。
bool isHidden() const返回項是否被隱藏。
bool isSelected() const返回項是否被選中。
QListWidget *listWidget() const返回項所屬的父列表控件(若無則返回nullptr)。
virtual void read(QDataStream &in)從數據流in中讀取項的內容(用于序列化)。
void setBackground(const QBrush &brush)設置項的背景畫刷。
void setCheckState(Qt::CheckState state)設置項的勾選狀態。
virtual void setData(int role, const QVariant &value)設置項中指定角色role對應的數據為value
void setFlags(Qt::ItemFlags flags)設置項的標志(如禁用、可拖拽等)。
void setFont(const QFont &font)設置項的字體。
void setForeground(const QBrush &brush)設置項的前景畫刷(文本顏色)。
void setHidden(bool hide)設置是否隱藏項(hidetrue時隱藏)。
void setIcon(const QIcon &icon)設置項的圖標。
void setSelected(bool select)設置項是否被選中。
void setSizeHint(const QSize &size)設置項的推薦顯示尺寸。
void setStatusTip(const QString &statusTip)設置項的狀態欄提示文本(鼠標懸停時顯示在狀態欄)。
void setText(const QString &text)設置項的顯示文本。
(since 6.4) void setTextAlignment(Qt::Alignment alignment)(Qt 6.4新增) 設置項的文本對齊方式(如左對齊、居中對齊)。
void setToolTip(const QString &toolTip)設置項的懸浮提示文本(鼠標懸停時顯示)。
void setWhatsThis(const QString &whatsThis)設置項的“這是什么?”幫助文本(通過幫助按鈕觸發)。
QSize sizeHint() const返回項的推薦顯示尺寸。
QString statusTip() const返回項的狀態欄提示文本。
QString text() const返回項的顯示文本。
int textAlignment() const返回項的文本對齊方式(以Qt::Alignment枚舉值的整數形式表示)。
QString toolTip() const返回項的懸浮提示文本。
int type() const返回項的類型(用于自定義項類型的區分)。
QString whatsThis() const返回項的“這是什么?”幫助文本。
virtual void write(QDataStream &out) const將項的內容寫入數據流out(用于序列化)。
virtual bool operator<(const QListWidgetItem &other) const定義項的小于比較規則(默認按文本排序,可重載實現自定義排序邏輯)。
QListWidgetItem &operator=(const QListWidgetItem &other)賦值運算符,將另一個項other的屬性復制到當前項。

?實踐

ui效果如下

有一個顯示控件:qlistwidget,初始化的時候用他的additem函數添加三個項

ui->listWidget->addItem("c++");
ui->listWidget->addItem("java");
ui->listWidget->addItem("好好學習");

?在ui界面點擊提交會把lineediter里面的文本添加為listwidget的項,注意,在ui里面添加的槽不需要用connect連接,已經連接過了,如果再用會連續觸發兩次。

void MainWindow::on_btnclicked_clicked()
{//獲取lineediter里面的文本QString str=ui->lineEdit->text();//如果內容為空,不執行if(str.isEmpty()){return;}ui->listWidget->addItem(str);
}

刪除按鈕同理,用takeitem刪除選中項

void MainWindow::on_btndel_clicked()
{int row =ui->listWidget->currentRow();if(row<0){qDebug()<<"沒有選中任何項";return;}qDebug()<<"第"<<row<<"行已被刪除";ui->listWidget->takeItem(row);
}

完整代碼如下:?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QString>
#include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->listWidget->addItem("c++");ui->listWidget->addItem("java");ui->listWidget->addItem("好好學習");//連接槽函數,這里連接槽函數是不對的,在ui界面點擊轉到槽是默認有鏈接的,用connect會重復出發信號導致出錯//connect(ui->btnclicked,&QPushButton::clicked,this,&MainWindow::on_btnclicked_clicked);// connect(ui->btndel,&QPushButton::clicked,this,&MainWindow::on_btndel_clicked);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_btndel_clicked()
{int row =ui->listWidget->currentRow();if(row<0){qDebug()<<"沒有選中任何項";return;}qDebug()<<"第"<<row<<"行已被刪除";ui->listWidget->takeItem(row);
}//將plainedit里面的文本加進listwidget
void MainWindow::on_btnclicked_clicked()
{//獲取lineediter里面的文本QString str=ui->lineEdit->text();//如果內容為空,不執行if(str.isEmpty()){return;}ui->listWidget->addItem(str);
}//當前項變化
void MainWindow::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{if(current!=nullptr){qDebug()<<"當前項為:"<<current->text();}if(previous!=nullptr){qDebug()<<"之前項為:"<<previous->text();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80966.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Seata源碼—1.Seata分布式事務的模式簡介

大綱 1.Seata分布式事務框架簡介 2.Seata AT模式實現分布式事務的機制 3.Seata AT模式下的寫隔離機制 4.Seata AT模式下的讀隔離機制 5.官網示例說明Seata AT模式的工作機制 6.Seata TCC模式的介紹以及與AT模式區別 7.Seata Saga模式的介紹 8.單服務多個庫的分布式事務…

【Qt】之音視頻編程2:QtAV的使用篇

QtAV 基本播放控制功能實現&#xff08;C & QML&#xff09; QtAV 提供了完整的播放控制 API&#xff0c;支持 播放、暫停、停止、快進快退、截屏 等功能。以下是具體實現方法&#xff1a; 1. C 控制方式 基本播放控制 #include <QtAV> #include <QtAV/AVPlaye…

歌詞滾動效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 設置標簽頁圖標 --><link rel"shortcut icon&…

基于大模型的TIA診療全流程智能決策系統技術方案

目錄 一、多模態數據融合與預處理系統1.1 數據接入模塊1.2 數據預處理偽代碼二、TIA智能預測模型系統2.1 模型訓練流程2.2 混合模型架構偽代碼三、術中智能監測系統3.1 實時監測流程3.2 實時預測偽代碼四、智能診療決策系統4.1 手術方案推薦流程4.2 麻醉方案生成偽代碼五、預后…

Java 日期解析與格式化:從標準格式到自然語言解析

使用 Java 搭配 Apache Commons Lang3 和 Natty 庫&#xff0c;實現靈活高效的日期解析與格式化。 一、背景 將不同格式的日期統一成一個格式。日期格式可能有以下幾種類型&#xff1a; 標準格式&#xff1a;2024-02-28、14/05/2022、2002年5月6日非英文月份縮寫&#xff1a;…

Room持久化庫:從零到一的全面解析與實戰

簡介 在Android開發中,Room作為官方推薦的數據庫持久化庫,提供了對SQLite的抽象層,使得數據庫操作更加安全、高效且易于維護。 Room通過注解處理器和編譯時驗證,顯著降低了數據庫操作的復雜度,同時支持響應式編程模式,使開發者能夠輕松實現數據變化的實時監聽。對于企業…

MySQL(6)如何刪除數據庫和表?

在 MySQL 中刪除數據庫和表是常見的管理操作。下面將詳細介紹如何使用 SQL 語句以及圖形化工具來刪除數據庫和表。 步驟一&#xff1a;連接 MySQL 服務器 首先&#xff0c;連接到 MySQL 服務器&#xff0c;可以使用命令行工具 mysql 或圖形化工具如 MySQL Workbench。 使用命…

攜固態電池、新形態鋼殼疊片電池等產品 豪鵬科技將亮相CIBF 2025

攜固態電池、新形態鋼殼疊片電池等產品 豪鵬科技將亮相CIBF 2025 來源&#xff1a; 電池百人會-電池網 豪鵬科技&#xff08;展位號:14W001&#xff09;將攜固態電池、新形態鋼殼疊片電池及高安全性鈉離子電池等前沿技術產品亮相CIBF 2025&#xff0c;憑借多年的技術積累和產…

React學習———useEffect和useLayoutEffect

useEffect useEffect是React的一個Hook&#xff0c;用于在函數組件中處理副作用。副作用包括數據獲取、訂閱、手動DOM操作以及其他需要再渲染后執行的操作 基本用法 useEffect(() > {// 副作用邏輯return () > {// 可選的清理函數} }, [依賴數組])第一個參數&#xff…

“天神之眼”計算平臺的算力設計(預計500-1000 TOPS)

關于比亞迪“天神之眼”計算平臺的算力設計&#xff08;預計500-1000 TOPS&#xff09;&#xff0c;其技術路徑和行業意義值得深入探討。以下從實現方式、技術挑戰和行業影響三個維度展開分析&#xff1a; 1. 多芯片互聯的技術實現路徑 &#xff08;1&#xff09;芯片選型方案…

FPGA: Xilinx Kintex 7實現PCIe接口

在Xilinx Kintex-7系列FPGA上實現PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;接口&#xff0c;通常使用Xilinx提供的7 Series Integrated Block for PCIe IP核&#xff0c;結合Vivado設計流程。以下是實現PCIe接口的詳細步驟和關鍵點&#xff0c;適…

ArcGIS Desktop使用入門(二)常用工具條——圖形

系列文章目錄 ArcGIS Desktop使用入門&#xff08;一&#xff09;軟件初認識 ArcGIS Desktop使用入門&#xff08;二&#xff09;常用工具條——標準工具 ArcGIS Desktop使用入門&#xff08;二&#xff09;常用工具條——編輯器 ArcGIS Desktop使用入門&#xff08;二&#x…

JT/T 808 通訊協議及數據格式解析

文章目錄 一、引言二、協議數據幀結構三、消息頭結構&#xff08;Message Header&#xff09;四、常用消息類型&#xff08;Message ID&#xff09;五、典型消息體結構解析六、數據轉義規則七、校驗碼計算方法八、終端與平臺通信流程示意&#xff08;簡要&#xff09;九、平臺接…

Rust 輸出到命令行

Rust 輸出到命令行 引言 Rust 是一門系統編程語言&#xff0c;以其高性能、內存安全、并發支持和零成本抽象等特性而聞名。在開發過程中&#xff0c;將 Rust 程序的輸出傳遞到命令行是常見的需求。本文將詳細介紹 Rust 輸出到命令行的多種方法&#xff0c;幫助讀者掌握這一技…

從字符串轉換到矩陣快速冪:解決多次轉換后的長度問題

引言 在編程競賽和算法問題中&#xff0c;我們經常會遇到需要對字符串進行多次轉換的問題。本文將介紹一個有趣的問題&#xff1a;給定一個字符串和轉換規則&#xff0c;計算經過多次轉換后字符串的長度。由于直接模擬會導致性能問題&#xff0c;我們將使用矩陣快速冪來高效解…

Vue2 elementUI 二次封裝命令式表單彈框組件

需求&#xff1a;封裝一個表單彈框組件&#xff0c;彈框和表單是兩個組件&#xff0c;表單組件以插槽的形式動態傳入彈框組件中。 外部組件使用的方式如下&#xff1a; 直接上代碼&#xff1a; MyDialog.vue 彈框組件 <template><el-dialog:titletitle:visible.syn…

React Hooks:從“這什么鬼“到“真香“的奇幻之旅

寫在前面:一個讓React老手都拍案叫絕的魔法 “等等,函數組件怎么能有狀態?!” —— 這是2018年我第一次聽說React Hooks時的反應。當時我正在用class組件寫一個復雜的表單,生命周期方法亂得像一碗意大利面。直到我看到了這段代碼: function Counter() {const [count, s…

論文閱讀筆記——雙流網絡

雙流網絡論文 視頻相比圖像包含更多信息&#xff1a;運動信息、時序信息、背景信息等等。 原先處理視頻的方法&#xff1a; CNN LSTM&#xff1a;CNN 抽取關鍵特征&#xff0c;LSTM 做時序邏輯&#xff1b;抽取視頻中關鍵 K 幀輸入 CNN 得到圖片特征&#xff0c;再輸入 LSTM&…

SpringBoot Vue MySQL酒店民宿預訂系統源碼(支付寶沙箱支付)+代碼講解視頻

&#x1f497;博主介紹&#x1f497;&#xff1a;?在職Java研發工程師、專注于程序設計、源碼分享、技術交流、專注于Java技術領域和畢業設計? 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的老師 Wechat / QQ 名片 :) Java精品實戰案例《700套》 2025最新畢業設計選題推薦…

右值引用的學習

傳統的C語法中就有引用的語法&#xff0c;而C11中新增了的右值引用語法特性&#xff0c;所以從現在開始我們之前學習的引用就叫做左值引用。無論左值引用還是右值引用&#xff0c;都是給對象取別名。 左值引用和右值引用 在講之前&#xff0c;我們先來看一下什么是左值和右值…