• 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  

  • 相关阅读:
    2021“MINIEYE杯”中国大学生算法设计超级联赛(1)1005. Minimum spanning tree(min25筛)
    2021“MINIEYE杯”中国大学生算法设计超级联赛(1)1008. Maximal submatrix(DP/单调栈)
    2021牛客暑期多校训练营2 K. Stack(拓扑排序)
    2021牛客暑期多校训练营2 F. Girlfriend(阿波罗尼斯圆/计算几何)
    牛客小白月赛36 C. 杨辉三角(组合数/推柿子)
    牛客小白月赛36 I. 四面楚歌(DFS)
    链路聚合
    python 重复尝试【retry】编写
    groovy 错误retry函数
    Jenkins【共享库功能】开发通用流水线模板
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11488355.html
Copyright © 2020-2023  润新知