qt5--列表控件QListWidget

需要   #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  

原文地址:https://www.cnblogs.com/liming19680104/p/11488355.html