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

2024-03-29 23:28

本文主要是介绍【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);}

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

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

这篇关于【QT入门】 QListWidget各种常见用法详解之图标模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859926

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

详解python pycharm与cmd中制表符不一样

《详解pythonpycharm与cmd中制表符不一样》本文主要介绍了pythonpycharm与cmd中制表符不一样,这个问题通常是因为PyCharm和命令行(CMD)使用的制表符(tab)的宽... 这个问题通常是因为PyCharm和命令行(CMD)使用的制表符(tab)的宽度不同导致的。在PyChar

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1