zoukankan      html  css  js  c++  java
  • 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  

  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11488355.html
Copyright © 2011-2022 走看看