【QT入门】 QListWidget各种常见用法详解之图标模式

往期回顾

【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客

【QT入门】 QTabWidget各种常见用法详解-CSDN博客

【QT入门】 QListWidget各种常见用法详解之列表模式-CSDN博客

【QT入门】 QListWidget各种常见用法详解之图标模式

QListWidget有列表和图标两种显示模式,默认是列表模式,列表模式上方链接已给出,我们现在看图标模式。

enum ViewMode
{
ListMode, //列表模式
IconMode //图标模式
};

学一个新的控件,首先要看他是怎么构造的,其次看怎么用,常用的方法,然后要去看他的信号函数,特别是熟悉常用方法和信号。一般来说ui界面创建和手动代码创建都要学会。 

这里我们先只看纯代码设计。

一、纯代码设计

1、最终效果

2、代码思路

 2.1创建布局

1、我们首先创建水平或者垂直布局,因为只有一个布局,所以哪个都行。

QVBoxLayout* pVLay = new QVBoxLayout(this);
2.2创建listWidget

 2、创建一个listWidget来存放item,注意,是先放listWidgetItem,然后在listWidgetItem里面放Icon

 QListWidget* pLWidget = new QListWidget(this);
2.3设置图标模式

 3、这里需要注意,由于QListWidget默认列表模式,所以我们使用图标模式还需要进行设置,加了才能显示图标

pLWidget->setViewMode(QListView::IconMode);

setViewMode一共就两个参数
enum ViewMode { ListMode, IconMode };列表或者图标模式

2.4设置滑动条

4、设置滑动条,水平滑动条和垂直滑动条,注意用的方法名

 pLWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);pLWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

控制滑动条的三个参数  

ScrollBarAsNeeded,//需要时显示       
ScrollBarAlwaysOff,//不显示        
ScrollBarAlwaysOn//显示
2.5初始化QIcon和QString对象

5、多个图标用for循环进行加载,先初始化QIcon和QString对象,一个是图标路径,一个是图标名字,这里都是没有new的,直接隐式调用了,

QIcon Icon(":/QListWidget_03/res/vim.png");
QString name = QString("LinFeng00%1").arg(QString::number(i));

同时这里用法要知道,怎么实现把i这个自增参数加到QString对象里面去,而且我是可以多次使用的,比如

QString name = QString("LinFeng%1And%2And%3").arg(QString::number(i)).arg(QString::number(i)).arg(QString::number(i));
 2.6设置QListWidgetIcon

 6、回看第三点,不是直接放Icon在listWidget里面,是先把Icon和name放到QListWidgetIcon里面

QListWidgetItem* pListItem1 = new QListWidgetItem(Icon, name);

2.7设置item宽高 

7、接着对item设置宽高,这里的item宽高,不能说用整体widget的来算,比如整体widget我设置宽600,item宽200,不能说就能放三个,因为除了item本身宽度,还要考虑滑动条宽度等,所以实际需要的widget宽度肯定更大,另外注意每个item之间的margin-right/left是包含在180里面了的

        pListItem1->setSizeHint(QSize(180,180));pLWidget->addItem(pListItem1);
2.7添加listWidget 

 8、最后把listWidget加到布局里就欧克

pVLay->addWidget(pLWidget);

另外其实还可以设计样式对整体图标模式样式进行设计,大家可以自行涉及。

3、完整代码示例

代码注释写的还算详细,应该没啥大问题。

QListWidget_03::QListWidget_03(QWidget *parent): QWidget(parent)
{resize(800, 500);//创建一个垂直布局,其实这里就一个,水平竖直都可以QVBoxLayout* pVLay = new QVBoxLayout(this);//创建一个listwidget放itemQListWidget* pLWidget = new QListWidget(this);//这行代码很重要,是用来设置显示模式,不加的话,默认是列表模式,加了才能显示图标pLWidget->setViewMode(QListView::IconMode);//控制滑动条三个参数/*enum ScrollBarPolicy {ScrollBarAsNeeded,//需要时显示ScrollBarAlwaysOff,//不显示ScrollBarAlwaysOn//显示};*/pLWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);pLWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//用for循环加载图标for (int i = 0; i < 15; i++){//先初始化QIcon和QString对象,一个是图标路径,一个是图标名字//QIcon的使用,我感觉不是很熟悉//QIcon *Icon = new QIcon(":/QListWidget_03/res/vim.png");QIcon Icon(":/QListWidget_03/res/vim.png");//这里用法要知道,怎么实现把i这个自增参数加到QString对象里面去//QString name = QString("LinFeng%1And%2And%3").arg(QString::number(i)).arg(QString::number(i)).arg(QString::number(i));QString name = QString("LinFeng00%1").arg(QString::number(i));//QListWidgetItem *pListItem1 = new QListWidgetItem(QIcon(":/new/prefix2/res/editor.png"),"editor");QListWidgetItem* pListItem1 = new QListWidgetItem(Icon, name);//这里的item宽高,不能说用整体widget的来算,比如整体widget我设置宽600,item宽200,不能说就能放三个//因为除了item本身宽度,还要考虑滑动条宽度等,所以实际需要的widget宽度肯定更大//每个item之间的margin-right/left是包含在180里面了的pListItem1->setSizeHint(QSize(180,180));pLWidget->addItem(pListItem1);}pVLay->addWidget(pLWidget);}

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

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

相关文章

《C++ Primer 第五版 中文版》第12章 动态内存【阅读笔记 + 个人思考】

《C Primer 第五版 中文版》第12章 动态内存【阅读笔记 个人思考】 12.1 动态内存与智能指针12.1.1 shared_ptr类 静态内存包括&#xff1a;初始化只读数据段&#xff0c;初始化读写数据段&#xff0c;未初始化数据和常量数据段。 详细在下面博客总结&#xff1a; Linux系统下…

矩阵的归一化技术

矩阵的归一化&#xff08;Normalization&#xff09;是将矩阵中的元素缩放到一个特定的范围或者标准&#xff0c;使得在进行比较、评估或计算时能够保持数值稳定性和可比性。这个过程在数据预处理、机器学习、图像处理等领域中非常重要。归一化有助于改善算法的收敛速度和精度&…

Lumos学习python第七课:字符串

一、老规矩&#xff0c;题目呢&#xff1f; 1、题目-----来源力扣 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C …

LeetCode_1.两数之和

一、题目描述 二、方法 1.方法1&#xff08;暴力枚举法&#xff09; 利用两个for循环&#xff0c;对数组进行逐一的遍历&#xff0c;直到找到两个数的和为目标值时返回这两个数的下标。以下为c实现的完整代码。 # include<iostream> using namespace std; #include<…

消息队列经典应用场景

笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电…

戴尔灵越3000来说2.5G的双核显存能干啥?

吃鸡已经成为大家耳熟能详的网络游戏。 很多人认为&#xff0c;想要享受吃鸡的乐趣&#xff0c;就必须组装一台高端电脑。 虽然配置越高越好&#xff0c;但现实是很多配置都是以性能为标准的。 有余了&#xff0c;没必要刻意追求高配置、高特效。 说实话&#xff0c;吃鸡不一定…

Linux之文件系统

我们之前谈到的文件描述符fd,是与被加载到内存中的文件相关的&#xff0c;那么还有什么文件呢&#xff1f;磁盘文件 内存文件 ------ 断电失效 磁盘文件 ------ 不受断电的影响 磁盘存储器存、取信息的最基本单位是扇区。 —个扇区能存储512Bytes的数据,OS与磁盘交互的单位…

CSS及javascript

一、CSS简介 css是一门语言&#xff0c;用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 &#xff08;1&#xff09;css导入html有三种方式&#xff1a; 1.内联样式&#xff1a;<div style"color:red&quo…

视频素材免费哪个好?7个视频素材下载网站推荐

小伙帮们准备做视频的时候才发现&#xff0c;哎呀&#xff0c;高清视频素材哪里找啊&#xff1f;不用急&#xff0c;这次我们依旧从中国的宝藏网站开始&#xff0c;然后穿越全球&#xff0c;发现更多精彩的无水印视频素材网站 1&#xff0c;蛙学府&#xff08;中国&#xff09…

URL编码:原理、应用与安全性

title: URL编码&#xff1a;原理、应用与安全性 date: 2024/3/29 18:32:42 updated: 2024/3/29 18:32:42 tags: URL编码百分号编码特殊字符处理网络安全应用场景标准演变未来发展 在网络世界中&#xff0c;URL&#xff08;统一资源定位符&#xff09;是我们访问网页、发送请求…

【ENSP】交换机和路由器之间实现静态路由

1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 路由器的每一个端口都是另外一个网段 2.实现方法 交换机允许对应vlan通行&#xff0c;配置vlanif的ip地址&#xff0c;做静态路由 路由器&#xff0c;进接口配置对应的ip&#xff0c;路由器和交换机相连的口&#xff0c;进入他的…

Unity AI Navigation自动寻路

目录 前言一、Unity中AI Navigation是什么&#xff1f;二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎&#xff0c;而人工智能&a…