需要 #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(); //清空 }