QT常用控件:QListWidget

API

复制代码
void QListWidget::addItem(QListWidgetItem *aitem);
void QListWidget::removeItemWidget(QListWidgetItem *aItem);


//判断指定坐标是否在item上
QListWidgetItem *QListWidget::itemAt(int ax, int ay);

QListWidgetItem *currentItem() const;


QListWidgetItem *takeItem(int row);

Demo

如下demo是展示基本添加QListWidgetItem用法,支持基本数据类型和自定义Item,

如下自定义item是CUserItem结构需要通过setItemWidget方法设置

复制代码
QListWidget* listWidget = new QListWidget(leftWidget);
    QListWidgetItem *item1 = new QListWidgetItem("item1");
    QListWidgetItem *item2 = new QListWidgetItem("item2");
    QListWidgetItem *item3 = new QListWidgetItem("item3");
    QListWidgetItem *item4 = new QListWidgetItem;


    listWidget->addItem(item1);
    listWidget->addItem(item2);
    listWidget->addItem(item3);
    listWidget->addItem(item4);

    //自定义item
    CUserItem *pUserItem = new CUserItem(this);
    listWidget->setItemWidget(item4, pUserItem);

支持右键菜单项

复制代码
void Widget::initRightMenu()
{
    m_pRightMenu = new QMenu(this);

    QAction *ac1 = new QAction("ac1");
    QAction *ac2 = new QAction("ac2");
    QAction *ac3= new QAction("ac3");
    QAction *ac4 = new QAction("delete");

    m_pRightMenu->addAction(ac1);
    m_pRightMenu->addAction(ac2);
    m_pRightMenu->addAction(ac3);
    m_pRightMenu->addAction(ac4);

    //点击删除
    connect(ac4, &QAction::triggered, this, [=](){
        //第一种删除方式,通过text动态删除
//        QList<QListWidgetItem*> list;
//        list = listWidget->findItems("ac1", Qt::MatchCaseSensitive);

//        QListWidgetItem *sel = list[0];
//        int row = listWidget->row(sel);

//        QListWidgetItem *item = listWidget->takeItem(row);
//        listWidget->removeItemWidget(item);

//        delete item;

        //第二种方式
         QListWidgetItem *item = listWidget->currentItem();
         listWidget->removeItemWidget(item);
         delete item;
    });

}

QListWidget图标模式

相关推荐
lhldsg17 小时前
全民健身解决方案:从共享球场到智能运营的技术实践
java·大数据·开发语言·需求分析
归去来?18 小时前
Python 常用优雅写法
开发语言·python
devilnumber18 小时前
Java 30 组高频技术 / 知识点多角度对比
java·开发语言
何以解忧,唯有..18 小时前
Python 异常处理完全指南:从基础到高级实践
开发语言·前端·python
gugucoding19 小时前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
此生决int19 小时前
深入理解C++系列(15)——AVL树
开发语言·c++
筱璦19 小时前
PHP+ VUE3机构级股票分仓管理交易系统源码可出
开发语言·php·vue3·量化·股票分仓
爱奥尼欧19 小时前
10.C++ string 实现详解
java·开发语言·c++
骇客野人19 小时前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式
JacksonMx19 小时前
Spring @Async 坑点 + 改造方案
java·开发语言