列表控件QListWidget

news2024/11/18 3:29:47

显示模式

有两种显示模式,列表模式和图标模式

// 获取和设置显示模式
QListView::ViewMode viewMode() const
void setViewMode(QListView::ViewMode mode)

QListView::ViewMode有两个取值

  • QListView::ListMode   列表模式

  • QListView::IconMode 图标模式 

交替背景色

设置相邻行交替显示不同的背景色,便于显示和浏览时定位

// 获取和设置交替显示(win11该接口失效)
bool alternatingRowColors() const
void setAlternatingRowColors(bool enable)

添加条目

// 在尾部添加
void addItem(const QString &label)
void addItem(QListWidgetItem *item)
void addItems(const QStringList &labels)

// 在指定行之前添加
void insertItem(int row, QListWidgetItem *item)
void insertItem(int row, const QString &label)
void insertItems(int row, const QStringList &labels) 

使用QListWidgetItem为参数的函数,可以为条目指定图标

QListWidgetItem::QListWidgetItem(const QIcon &icon, 
        const QString &text, 
        QListWidget *parent = nullptr, 
        int type = Type) 

删除条目

列表中的条目可以删除,以删除当前行为例

// 方法一
QListWidgetItem* item = ui->lwProvince->currentItem();
ui->lwProvince->removeItemWidget(item);
delete item;

// 方法二
int row = ui->lwProvince->currentRow();
QListWidgetItem* item = ui->lwProvince->takeItem(row);
delete item;

都需要手动delete掉item;

常用信号

// 当条目被单击时,发射该信号
void itemClicked(QListWidgetItem *item);

// 当条目被双击时,发射该信号
void itemDoubleClicked(QListWidgetItem *item);

举例

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QListWidget>
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QMessageBox>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr): QWidget(parent)
    {
        resize(200,200);
        QVBoxLayout* v_box=new QVBoxLayout(this);
        v_box->setSpacing(20);

        //创建列表
        list=new QListWidget(this);

        //添加一条初始条目
        QListWidgetItem* item1=new QListWidgetItem(QIcon(":/11.png"),"湖北");
        list->addItem(item1);
        v_box->addWidget(list);

        QHBoxLayout* h_box=new QHBoxLayout();
        h_box->setSpacing(20);
        //创建按钮
        add=new QPushButton("添加一行",this);
        del=new QPushButton("删除选中行",this);
        change_mod=new QPushButton("改变显示模式",this);
        h_box->addWidget(add);
        h_box->addWidget(del);
        h_box->addWidget(change_mod);
        v_box->addLayout(h_box);

        //绑定槽函数
        //添加
        connect(add,&QPushButton::clicked,this,[=](){
            //直接在尾部添加
            QListWidgetItem* item1=new QListWidgetItem(QIcon(":/11.png"),"浙江");
            list->addItem(item1);
        });

        //删除
        connect(del,&QPushButton::clicked,this,[=](){
            //删除当前选中的行
            QListWidgetItem* item=list->currentItem();
            list->removeItemWidget(item);
            delete item;//记手动delete

            // //如何遍历list里面控件的条目
            // for(int i=0;i<list->count();++i)
            // {
            //     获取条目的个数,然后根据索引获取条目
            //     auto item=list->takeItem(i);
            // }
        });

        //改变显示模式
        connect(change_mod,&QPushButton::clicked,this,[=](){
            //设为列表或者图标模式
            if(list->viewMode()==QListWidget::ListMode)
            {
                list->setViewMode(QListWidget::IconMode);
            }
            else if(list->viewMode()==QListWidget::IconMode)
            {
                list->setViewMode(QListWidget::ListMode);
            }
        });

        //绑定QListWidget控件的信号
        connect(list,&QListWidget::itemClicked,this,[=](){
            //将选中条目的文本提示下
            auto item=list->currentItem();//该接口获取当前选条目
            QMessageBox::information(this,"",QStringLiteral("当前选中:")+item->text());
        });

    }

    ~Widget()=default;
private:
    QPushButton* add;
    QPushButton* del;
    QPushButton* change_mod;

    QListWidget* list;

};
#endif // WIDGET_H

学习链接:https://github.com/0voice

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《银河战星:僵局》风灵月影修改器使用指南,轻松驾驭宇宙战场

在策略射击游戏《银河战星&#xff1a;僵局》中&#xff0c;合理利用风灵月影修改器能极大提升你的游戏体验。 以下是简明操作步骤&#xff0c;助你迅速上手&#xff0c;遨游星际&#xff1a; 1.下载安装&#xff1a; 首先&#xff0c;确保从正规渠道获取风灵月影修改器&…

冒泡排序-C语言

1.问题&#xff1a; 从小到大对10个数进行排序&#xff0c;要求使用冒泡排序实现。 2.解答&#xff1a; 排序规律有两种&#xff1a;一种是“升序”&#xff0c;从小到大&#xff1b;另一种是“降序”&#xff0c;从大到小。 3.代码&#xff1a; #include<stdio.h>//头…

保护您的网络:入侵检测系统 IDS 终极指南

IDS 和 IPS&#xff1a;了解异同-CSDN博客 IDS(入​​侵检测系统) 和 IPS(入​​侵防御系统) 之间的区别-CSDN博客 即便是今天&#xff0c;互联网仍与黑客肆意横行的网络无异。 但不必害怕&#xff01;我们有解决您问题的完美解决方案&#xff1a;入侵检测系统 I DS。 IDS就…

本地打开打包后的dist文件报错的解决方法

出现问题 本地直接打开dist文件夹会报错&#xff0c;报错信息类似于&#xff1a; Access to script at file:///D:/assets/index.9cb0ffcc.js from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: chrome, ch…

TypeScript基础语法与面对对象

TypeScript 基础语法 TypeScript 与面向对象 面向对象是一种对现实世界理解和抽象的方法。TypeScript 是一种面向对象的编程语言。面向对象主要有两个概念&#xff1a;对象和类 对象&#xff1a;对象是类的一个实例&#xff08;对象不是找个女朋友&#xff09;&#xff0c;有…

【优选算法】(第四篇)

目录 三数之和&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 四数之和&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 三数之和&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&…

接口返回动态列名及动态列数据结构

接口返回动态列名及动态列数据结构代码方案 在开发过程中&#xff0c;有时我们需要处理动态表头和动态列数据的问题。特别是在一些数据统计或报表类需求中&#xff0c;列名和数据都可能随着时间或条件发生变化。本文将结合实际代码和表格展示&#xff0c;详细说明如何在接口中…

微信阅读网站小程序+ssm论文ppt源码调试讲解

第2章 开发环境与技术 微信阅读网站小程序的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对微信阅读网站小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&#xf…

Linux中的tr命令详解

1&#xff0c; 将小写字母转换为大写字母&#xff1a; echo "hello" | tr a-z A-Z但是限定字母的范围的话&#xff0c;是什么输出你们知道吗&#xff1f; echo "hello" | tr a-l A-L2&#xff0c;删除特定字符&#xff1a; 比如&#xff0c;删除所有的数…

【吊打面试官系列-MySQL面试题】MySQL锁的优化策略?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL锁的优化策略?】面试题&#xff0c;希望对大家有帮助&#xff1b; MySQL锁的优化策略? 1、读写分离 2、分段加锁 3、减少锁持有的时间 4.多个线程尽量以相同的顺序去获取资源不能将锁的粒度过于细化&#xff0c;不然可能会…

算法工程师重生之第十六天(二叉搜索树的最小绝对差 二叉搜索树中的众数 二叉树的最近公共祖先 )

参考文献 代码随想录 一、二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#x…

语义元分割学习:一种用于少量样本无线图像分类的TinyML方案

论文标题&#xff1a;Semantic Meta-Split Learning: A TinyML Scheme for Few-Shot Wireless Image Classification 中文标题&#xff1a;语义元分割学习&#xff1a;一种用于少量样本无线图像分类的TinyML方案 作者信息&#xff1a; Eslam Eldeeb, Mohammad Shehab, Hirley…

nvm,一款nodejs版本管理工具

背景 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是为…

Dapper 如何确保数据的安全性和防止 SQL 注入攻击?

一、什么是SQL注入攻击 SQL注入攻击是一种常见的网络攻击手段&#xff0c;它利用了应用程序中安全措施不足的问题&#xff0c;允许攻击者插入或“注入”一个或多个SQL语句到原本的查询中。这种攻击可以用于获取、篡改或删除数据库中的数据&#xff0c;甚至可以执行一些数据库管…

java:brew安装rabbitmq以及简单示例

什么是消息队列mq 可以看我之前写的这篇 消息队列MQ rabbitmq简介 RabbitMQ是由erlang语言开发&#xff0c;基于AMQP&#xff08;Advanced Message Queue 高级消息队列协议&#xff09;协议实现的消息队列&#xff0c;它是一种应用程序之间的通信方法&#xff0c;消息队列在…

200smart数据日志的功能

称重设备&#xff08;皮带秤&#xff09;读取到的数据值总是一直在跳变&#xff0c;无法正确识别称重传感器读取上来的值来判断产品的重量&#xff0c;虽然在程序中增加了取平均值功能&#xff08;模拟量输入按PLC扫描周期次数求平均值程序&#xff09;&#xff0c;但效果不理想…

什么是聚集索引?

什么是聚集索引&#xff1f; 1、聚集索引的特点2、如何确定聚集索引3、性能优势 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 聚集索引是一种特殊的索引&#xff0c;它直接包含了表中的所有数据行。所以&#xff0c;通过聚集索引&#xf…

代码随想录冲冲冲 Day56 图论Part8

117. 软件构建 这道题是使用拓扑排序的方法 看多个任务有优先级的情况下 怎么排序 对应到这道题就是文件排序 首先要记录每一个点的入度&#xff0c;当一个点的入度为0时&#xff0c;就说明这个点是顶点 然后记录每一个点向那些点相连 之后建立一个queue 寻找一个入度为0的…

弹簧状态检测系统源码分享

弹簧状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Linux中安装ffmpeg

Linux中安装ffmpeg 一、下载二、安装三、测试 一、下载 先到这里下载ffmpeg。 二、安装 先将上传到服务器的某一目录&#xff0c;我这里是&#xff1a; /usr/local/ffmpeg 然后解压&#xff0c;解压命令如下&#xff1a; tar -xvf “你的安装包名称”我的是&#xff1a; ta…