QT的QListWidget详解

本文详细介绍了QT框架中的QListWidget类,包括其功能、界面设置方法、属性以及代码实现过程。QListWidget支持显示带有图标的列表项,用户可进行交互操作如增删改查。通过编辑器设置QListWidget属性,如currentRow和sortingEnabled,并能为列表项设置可选和可编辑等属性。同时,文章展示了如何通过代码创建QListWidget,以及利用信号和槽机制实现点击列表项触发相应操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是QListWidget

        QListWidget是 Qt 框架中用于显示列表的一个类,列表中的项可以是简单的字符串,也可以带有图标,用户可以查看、增加、删除、修改项,可以进行点击等操作进行交互,总之,QListWidget功能很强大,可以满足列表数据中的各种需求。

界面设置QListWidget

        打开一个空白页面,在左侧找到 List Widget 控件拖拽到页面中,调整下大小

        双击List Widget,弹出编辑列表内容的窗口,点击 + ,可以增加列表项

        预览看到列表的数据正常展示

QListWidget的属性

        QListWidget的属性有两个,currentRow 代表当前选项的索引(从0开始),sortingEnabled 代表是否排序

          列表项也可以单独设置属性,双击再次打开编辑列表项的窗口,选中其中一个项,再点击属性,可以看到支持编辑的属性有很多,Selectable默认是选中的,所以列表项可选,Editable是否可编辑等

        选择Editable、checkState选择Checked,再预览,可以看到这个列表项前面多了一个多选框,列表项的值还可以编辑

        更多属性用法在QT助手中查询

代码实现QListWidget

        我们来看下用代码如何实现这个页面

1、创建一个QWidget的主窗体,在.cpp的文件中添加如下代码

    QHBoxLayout *horizontalLayout = new QHBoxLayout;

    QListWidget *listWidget = new QListWidget;
    QListWidgetItem *item1 = new QListWidgetItem("第一个数据");
    QListWidgetItem *item2 = new QListWidgetItem("第二个数据");
    QListWidgetItem *item3 = new QListWidgetItem("第三个数据");
    listWidget->addItem(item1);
    listWidget->addItem(item2);
    listWidget->addItem(item3);
    listWidget->setCurrentRow(-1);

    QWidget *widget = new QWidget;
    QHBoxLayout *horizontalLayout_2 = new QHBoxLayout;
    QLabel *label = new QLabel(widget);
    label->setText("主窗体");
    horizontalLayout_2->addWidget(label);
    widget->setLayout(horizontalLayout_2);


    horizontalLayout->addWidget(listWidget);
    horizontalLayout->addWidget(widget);
    horizontalLayout->setStretch(1, 4);

    this->setLayout(horizontalLayout);
    // 窗口的大小及位置,左上角坐标(300, 300),宽度1600,高度1000
    this->setGeometry(QRect(300, 300, 1600, 1000));

2、通过  工具 -- 界面编辑器 -- 预览 

3、如果想让列表项前显示多选框,且第一个项的内容可以编辑,加入如下代码

    item1->setCheckState(Qt::Checked);
    item1->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
    item2->setCheckState(Qt::PartiallyChecked);
    item3->setCheckState(Qt::PartiallyChecked);

4、通常点击列表项都会触发一些操作,例如刷新数据,这个仍需要用到信号和槽机制来实现,这里我们实现一下,点击列表项,改变右侧label的值这个操作

第一步:在.h文件中,使用slots来声明一个槽函数onItemClicked,要修改的对象label定义成全局对象

第二步:在.cpp文件中实现槽函数,并添加连接信号和槽的connect函数,点击列表项触发的信号是&QListWidget::itemClicked事件

5、这样就可以实现点击列表改变label的值了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值