
需要 #include <QListWidget> #include <QListWidgetItem>
列表控件可以讓我們以列表形式呈現內容,是界面更加有序美觀。QListWidget列表控件應當與QListWidgetItem一起使用,后者作為項被添加入列表控件中,也就是說列表控件中的每一項都是一個QListWidgetItem。這也是為什么我們說QListWidget是一個基於項(Item-based)的控件了
#include "win.h" #include <QListWidget> #include <QDebug> #include <QPushButton> Win::Win(QWidget *parent) : QWidget(parent) { this->resize(500,400); QPushButton* btn=new QPushButton("按鈕",this); btn->move(400,350); connect(btn,&QPushButton::clicked,this,&Win::A); QListWidgetItem* lwi1=new QListWidgetItem("鋤禾日當午,");//創建列表項目 lwi1->setTextAlignment(Qt::AlignHCenter);//設置文本對齊方式 //Qt::AlignHCenter 水平居中 //Qt::AlignLeft //Qt::AlignRight //Qt::AlignVCenter 垂直居中 //Qt::AlignBottom //Qt::AlignTop //QListWidget* lw=new QListWidget(this);//創建列表控件 lw=new QListWidget(this);//創建列表控件 //lw->setViewMode(QListView::IconMode);//設置顯示模式為圖標模式--項目橫放 lw->setViewMode(QListView::ListMode);//設置顯示模式為列表模式--豎放 lw->addItem(lwi1);//給列表控件添加一個項目 QStringList list; list<<"汗滴禾下土。"<<"誰知盤中餐,"<<"粒粒皆辛苦。"; //給list增加項目 //無法設置對齊 lw->addItems(list);//給列表控件添加一些項目 QListWidgetItem* lwi2=new QListWidgetItem("李明"); lw->insertItem(2,lwi2);//插入項目 //參數1 序號 //參數2 項目 int s=lw->count(); //獲取列表項的總數目 qDebug()<<s; connect(lw,&QListWidget::itemDoubleClicked,this,&Win::B);//雙擊某項目時發出信號 //這個信號會自動傳遞一個參數:被雙擊項目的對象地址(QListWidgetItem *item)---0x54e458d210 //item->text() 獲取項目文本---"粒粒皆辛苦。" connect(lw,&QListWidget::itemClicked,this,&Win::C);//單擊某項目時發出信號 //這個信號會自動傳遞一個參數:被單擊項目的對象地址(QListWidgetItem *item)---0x54e458d210 //item->text() 獲取項目文本---"粒粒皆辛苦。" connect(lw,&QListWidget::itemChanged,this,&Win::D);//如何觸發這個信號??? //我增加項目 插入項目 都沒有觸發??? connect(lw,&QListWidget::currentItemChanged,this,&Win::E);//當前項目變化時觸發信號 //這個信號會自動傳遞二個參數:第一個當前項目的對象地址(QListWidgetItem *item)---0x54e458d210 //第二個 前一項目的對象地址 注意:第一次選擇時這個地址不能用item->text()提取文本,因為地址是0x0 connect(lw,&QListWidget::currentRowChanged,this,&Win::F);//當前項目變化時觸發信號 //這個信號會自動傳遞一個參數(int):當前項目索引號 } void Win::F(int currentRow){ qDebug()<<"當前索引號改變了:"<<currentRow; } void Win::E(QListWidgetItem *item,QListWidgetItem *item1){ qDebug()<<"當前項目改變了:"<<item->text()<<item1; } void Win::D(QListWidgetItem *item){ qDebug()<<"項目改變了:"<<item->text(); } void Win::C(QListWidgetItem *item){ qDebug()<<"單擊了列表控件:"<<item->text(); } void Win::B(QListWidgetItem *item){ qDebug()<<"雙擊了列表控件:"<<item->text(); } Win::~Win() { } void Win::A(){ int s=lw->currentRow();//返回當前項目的索引號 QListWidgetItem *item = lw->takeItem(s); //返回指定索引號項目的指針 delete item; //刪除指定項目 lw->clear(); //清空 }
實例下載地址:https://share.weiyun.com/5VyRcJL

