【qt】QListWidget 组件

QListWidget 组件

  • 一.QListWidget的用途
  • 二.界面设计
  • 三.QListWidget的添加
    • 1.界面添加
    • 2.代码添加
  • 四.列表项的设置
    • 1.文本
    • 2.图标
    • 3.复选框
    • 4.列表大小
  • 五.字体和图标的设置
    • 1.字体:
    • 2.图标:
  • 六.设置显示模式
    • 1.图标
    • 2.列表
  • 七.其他功能实现
    • 1.删除
    • 2.全选
    • 3.反选
    • 4.add添加
  • 八.右键快捷菜单
    • 1.自定义菜单设置
    • 2.转到槽
    • 3.创建菜单
    • 4.添加菜单项
    • 7.显示菜单
    • 8.删除菜单
  • 九.工具按钮
    • 1.拖拉工具按钮
    • 2.添加菜单
    • 3.弹出方式
    • 4.默认子菜单
    • 5.显示样式
  • 十.总结

一.QListWidget的用途

QListWidget 是一个用于显示列表项的组件,每个列表项通常由一个图标和一个文本组成。用户可以通过单击或选择列表项来与其进行交互

二.界面设计

我们还是来跟着项目来一起做,边做边学边快来!
目标图:
在这里插入图片描述
首先添加素材,需要的可以dd我。
然后需要用到 action 前面有讲过,不懂的可以去看界面设计哪里
在这里插入图片描述
工具栏这个地方可以调图标大小:
在这里插入图片描述

还需要用到QListWidget组件
不用状态栏的话,可以将其删除
接着就是一些布局。
在这里插入图片描述

三.QListWidget的添加

1.界面添加

双击ListWidget即可添加:
在这里插入图片描述

2.代码添加

这个是大头,来吧我们开始吧,先定义一个initUI的函数,记得姚在窗口的构造函数中调用哦。
因为用代码进行添加时姚用到列表项,所有我们要先来设置一下列表项。

四.列表项的设置

1.文本

QListWidgeItem就是列表项,我们可以对其添加文本
然后就可以添加到我们的ListWidget

void MainWindow::initUI()
{QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};for(int i=0;i<list.count();i++){QListWidgetItem *item=new QListWidgetItem;//列表项item->setText(list[i]);ui->listWidget->addItem(item);}}

运行结果:
在这里插入图片描述
对了,可以把我们刚刚添加的恋爱课程去掉;

void MainWindow::initUI()
{ui->listWidget->clear();//可以清空QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};for(int i=0;i<list.count();i++){QListWidgetItem *item=new QListWidgetItem;//列表项item->setText(list[i]);ui->listWidget->addItem(item);}
}

就一行代码,运行结果:
在这里插入图片描述

2.图标

现在我们来添加灵魂就是图标。

void MainWindow::initUI()
{ui->listWidget->clear();//可以清空QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};QIcon icon;icon.addFile(":/images/image/class.png");//设置图标到图标变量icon中for(int i=0;i<list.count();i++){QListWidgetItem *item=new QListWidgetItem;//列表项item->setText(list[i]);item->setIcon(icon);//添加图标ui->listWidget->addItem(item);}
}

运行结果:
在这里插入图片描述

3.复选框

item->setCheckState(Qt::Unchecked);//设置未勾选的复选框

运行结果:
在这里插入图片描述

4.列表大小

还可以对列表项的大小进行设置

item->setSizeHint(QSize(200,80));

在这里插入图片描述

五.字体和图标的设置

1.字体:

对于ListWidget里面列表项的字体,我们可以继续设置。

    QFont font=ui->listWidget->font();font.setPointSize(30);ui->listWidget->setFont(font);

运行结果:
在这里插入图片描述

2.图标:

图标的大小我们同样可以通过listWidget来进行设置。

ui->listWidget->setIconSize(QSize(40,40));

运行结果:
在这里插入图片描述

六.设置显示模式

1.图标

对图标模式用action转到槽

void MainWindow::on_actionIconMode_triggered()
{ui->listWidget->setViewMode(QListView::IconMode);//设置为图标模式
}

运行结果:
在这里插入图片描述
但是感觉上下帖的好紧,我们可以用setSpacing来进行留白

ui->listWidget->setSpacing(20);//对四周都会产生留白效果

运行结果:
在这里插入图片描述
现在还有一个问题就是当我们缩小框的时候,列表项不能够自适应
就是这样:
在这里插入图片描述
解决方案:

ui->listWidget->setResizeMode(QListView::Adjust);//可以自适应窗口大小

运行结果:
在这里插入图片描述

2.列表

对列表模式action用转到槽:

void MainWindow::on_actionListMode_triggered()
{ui->listWidget->setViewMode(QListView::ListMode);//设置为列表模式//ui->listWidget->setSpacing(10);对四周都会产生留白效果
}

运行结果:
在这里插入图片描述

七.其他功能实现

1.删除

void MainWindow::on_actionDelete_triggered()
{int count=ui->listWidget->count();//先拿列表项的个数for(int i=count-1;i>=0;i--)//从后往前删,不然索引会错误{//如果列表项的复选框选中就进行删除if(ui->listWidget->item(i)->checkState()==Qt::Checked){auto item=ui->listWidget->takeItem(i);//删除会返回这个值的指针,但是内存没有真正的删除delete item;}}
}

数学英语被我删了,运行结果:

在这里插入图片描述

2.全选

item可以拿到列表项,然后进行设置

void MainWindow::on_actionSelectAll_triggered()
{int count=ui->listWidget->count();for(int i=0;i<count;i++){ui->listWidget->item(i)->setCheckState(Qt::Checked);}
}

运行结果:
在这里插入图片描述

3.反选

先用item拿到列表项
然后检查复选框的状态,然后进行相反的设置。

void MainWindow::on_actionFan_triggered()
{int count=ui->listWidget->count();for(int i=0;i<count;i++){auto item=ui->listWidget->item(i);if(item->checkState()==Qt::Checked){ui->listWidget->item(i)->setCheckState(Qt::Unchecked);}else{ui->listWidget->item(i)->setCheckState(Qt::Checked);}}
}

运行结果:
在这里插入图片描述

4.add添加

对按钮进行转到槽,然后检查文本框是否为空
trimmed可以排除收尾的空格,避免输入无效空格

void MainWindow::on_pushButton_clicked()
{//如果文本不为空if(ui->lineEdit->text().trimmed().length()>0){QListWidgetItem *item=new QListWidgetItem;item->setText(ui->lineEdit->text().trimmed());QIcon icon;icon.addFile(":/images/image/class.png");item->setIcon(icon);item->setCheckState(Qt::Unchecked);ui->listWidget->addItem(item);}}

运行结果:
在这里插入图片描述

八.右键快捷菜单

1.自定义菜单设置

 ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);//可以自定义菜单

将上下文菜单策略设置为自定义菜单策略。在这种策略下,当用户在该部件上右击时,不会自动弹出默认的上下文菜单,而是需要手动编写代码来定义自己的上下文菜单。

2.转到槽

选择这个信号
在这里插入图片描述

3.创建菜单

QMenu *menu=new QMenu(this);

4.添加菜单项

    menu->addAction(ui->actionIconMode);menu->addAction(ui->actionListMode);menu->addSeparator();//添加分割线menu->addAction(ui->actionDelete);

7.显示菜单

menu->exec(QCursor::pos());

8.删除菜单

 delete menu;

总的:

void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{menu->addAction(ui->actionIconMode);menu->addAction(ui->actionListMode);menu->addSeparator();//添加分割线menu->addAction(ui->actionDelete);menu->exec(QCursor::pos());delete menu;
}

运行结果:
在这里插入图片描述

九.工具按钮

1.拖拉工具按钮

在这里插入图片描述

2.添加菜单

    QMenu *menu=new QMenu;menu->addAction(ui->actionIconMode);menu->addAction(ui->actionListMode);menu->addAction(ui->actionDelete);ui->toolButtonMenu->setMenu(menu);

3.弹出方式

 ui->toolButtonMenu->setPopupMode(QToolButton::InstantPopup);

4.默认子菜单

ui->toolButtonMenu->setDefaultAction(ui->actionIconMode);

5.显示样式

ui->toolButtonMenu->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

运行结果:
在这里插入图片描述

十.总结

对于QListWidget的组件,我们最重要的一点是往里面添加的是列表项ListWidgetItem,这又是一种类型。
因此我们要注意那些接口是用在列表项的,那些是用在列表的。

冰冻三尺,非一日之寒

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

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

相关文章

清空了电脑回收站,之前的文件还能否恢复?

电脑已成为我们日常生活中不可或缺的一部分。我们在电脑上处理文档、保存图片、下载视频等&#xff0c;而电脑中的回收站则成为我们处理不再需要文件的一个便捷工具&#xff0c;当我们想要删除某些文档的话&#xff0c;它并不是立即从硬盘上消失&#xff0c;而是被系统移动到了…

【堡垒机小知识】堡垒机资产监控能监控哪些东西呢?

堡垒机&#xff0c;重要的网络安全工具&#xff0c;其资产监控功能在保障系统稳定运行、防范潜在风险方面发挥着至关重要的作用。但不少小伙伴对于监控内容不清楚&#xff0c;这里我们就来一起简单看看&#xff0c;仅供参考~ 堡垒机资产监控能监控哪些东西呢&#xff1f; 【…

js——数据操作——实现阶梯价格排序——基础积累

最近在写网络报价的时候&#xff0c;遇到一个需求&#xff0c;就是要根据采购数量&#xff0c;找到符合数量的阶梯区间&#xff0c;并找到最便宜的采购价格。 比如下面&#xff1a; let originViewList [{id:1,incrementalQuantity:10,priceList:[{minQuantity:1,price:20},…

Linux —— 线程同步

Linux —— 线程同步 死锁线程同步条件变量pthread_cond_waitpthread_cond_signal初始状态为什么之后会“阻塞”如何修改以持续运行 pthread_cond_broadcast 条件变量的接口抢票模拟 我们今天接着来了解线程&#xff1a; 死锁 死锁&#xff08;Deadlock&#xff09;是计算机科…

基础编程函数题

1.简单输出整数&#xff1a;本题要求实现一个函数&#xff0c;对给定的正整数N&#xff0c;打印从1到N的全部正整数。 #include <stdio.h> void PrintN ( int N ); int main () { int N; scanf("%d", &N); PrintN( N ); return 0; } void Prin…

会所前台装水离子雾化壁炉前和装后对比

会所前台装水离子雾化壁炉前和装后会有明显的对比&#xff1a; 装水离子雾化壁炉之前&#xff1a; 普通前台氛围&#xff1a; 在壁炉安装之前&#xff0c;前台可能显得普通&#xff0c;缺乏独特的装饰元素或焦点。 空间感平淡&#xff1a;前台的氛围可能相对平淡&#xff0c…

Python踩坑系列之使用redis报错:module ‘redis‘ has no attribute ‘Redis‘问题

一步一步往后看哦&#xff01;&#xff01;&#xff01; 纳尼&#xff0c;大伙看看这是什么情况&#xff0c;都是这么写的呢&#xff0c;为啥我这就报错了0.0 出现问题不可怕&#xff0c;解决它就完事了。 方法一、安装redis重新运行程序 pip install redis 无果&#xff0…

金丝雀发布(灰度发布)介绍 及 声明式管理方法简介

目录 一 应用发布策略 1&#xff0c;滚动发布&#xff08;k8s默认&#xff09; 2&#xff0c;蓝绿发布 3&#xff0c;金丝雀发布 二 金丝雀发布&#xff08;Canary Release&#xff09; &#xff08;灰度发布&#xff09; 1&#xff0c;金丝雀发布图解 2&#xff0…

数据库操作(函数)

函数是一段可以直接被另外一段程序调用的程序或代码 一。字符串函数 1.concat(s1,s1....sn)&#xff1a;字符串拼接&#xff0c;将s1&#xff0c;s2&#xff0c;sn拼接为一个字符串 例如&#xff1a; select concat("hello","world"); 2.lower(str&…

登录验证登录次数失败过多进行设置延时

现象结果示例截图 swagger示例效果 控制台示例效果 后端代码示例 package com.java.javamethod.service.impl;import com.java.javamethod.dao.UserMapper; import com.java.javamethod.domain.Result; import com.java.javamethod.domain.User; import lombok.extern.slf4j.…

《绝地潜兵2》开发商目标成为下一个暴雪或FS社

《绝地潜兵2》的开发商Arrowhead正以惊人的表现在游戏界崭露头角。这款游戏在发售后迅速获得了巨大成功&#xff0c;使得Arrowhead的首席创意官Johan Pilestedt怀揣雄心壮志&#xff0c;他们的目标是在保持独立的同时&#xff0c;成为下一个暴雪或From Software。 Johan Pilest…

firewalld

一、Firewalld概述 Firewalld 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具 支持IPV4、IPV6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置 永久配置 二、Firewalld和iptables的关系 netfilter 位于L…

10个最佳Android数据恢复工具,用于恢复已删除的文件

由于我们现在在智能手机上存储了许多重要文件&#xff0c;因此了解数据恢复工具变得很重要。您永远不会知道何时需要使用适用于Android的数据恢复工具。 由于不乏Windows数据恢复工具&#xff0c;因此从崩溃的计算机中恢复文件很容易。但是&#xff0c;当涉及到从Android恢复数…

兆原数通基于Apache SeaTunnel的探索实践

随着大数据技术的不断发展&#xff0c;数据同步工具在企业中的应用变得愈发重要。为了满足复杂多样的业务需求&#xff0c;找到一款高效、灵活的数据同步工具变得尤为关键。 在这篇文章中&#xff0c;我们将分享兆原数通研发经理李洪军对Apache SeaTunnel的选择、应用及经验。这…

jinkens打包前端依赖下载失败怎么办

不知道有没有小伙伴遇见这种问题&#xff0c;项目在本地可以正常下载、运行打包&#xff0c;但在jinkens上就不行了&#xff0c;配置了几种镜像也还是不行&#xff0c;这要如何解决呢&#xff1f; 那就只能去到jinkens配置的工作空间那里&#xff0c;找到对应的项目 &#xff…

总结优秀的prompt案例,学习更有效的prompt提示词工程写法,值得收藏

Prompt 提示词工程大多数人都在用&#xff0c;而且都会用&#xff0c;但是不一定写的好&#xff1f;很多人都在想怎么写好&#xff0c;更能满足自己的业务需求&#xff0c;或者实际场景。 我最近工作中也写了很多的prompt&#xff0c;像zero-shot、few-shot、COT这些都尝试过、…

FSC认证是什么?森林认证的好处是什么?

FSC认证&#xff08;Forest Stewardship Council&#xff0c;森林管理委员会认证&#xff09;是一种运用市场机制来促进森林可持续经营&#xff0c;实现生态、社会和经济目标的工具。以下是关于FSC认证的详细介绍&#xff1a; 一、FSC认证包括两个方面&#xff1a; 森林经营认…

乡村振兴与农业现代化:以现代农业科技为引领,提升农业综合生产能力,打造高产高效、生态安全的美丽乡村

目录 一、引言 二、现代农业科技在乡村振兴中的作用 &#xff08;一&#xff09;提高农业生产效率 &#xff08;二&#xff09;促进农业产业升级 &#xff08;三&#xff09;改善农村生态环境 三、提升农业综合生产能力的途径 &#xff08;一&#xff09;加强农业科技研…

Diffusion Policy:基于扩散模型的机器人动作生成策略

项目地址&#xff1a; Diffusion Policy (columbia.edu) 一、摘要 本文介绍了 "扩散策略"&#xff0c;这是一种生成机器人行为的新方法&#xff0c;它将机器人的视觉运动策略&#xff08;visuomotor policy&#xff09;表示为条件去噪扩散过程&#xff08;conditi…

添加、修改和删除列表元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 添加、修改和删除列表元素也称为更新列表。在实际开发时&#xff0c;经常需要对列表进行更新。下面我们介绍如何实现列表元素的添加、修改和删除。 …