简述

QFileIconProvider类为QDirModel和QFileSystemModel类提供了文件图标。

共有类型

枚举QFileIconProvider::IconType:

常量 值
QFileIconProvider::Computer 0
QFileIconProvider::Desktop 1
QFileIconProvider::Trashcan 2
QFileIconProvider::Network 3
QFileIconProvider::Drive 4
QFileIconProvider::Folder 5
QFileIconProvider::File 6

枚举QFileIconProvider::Option:

标记QFileIconProvider::Options:

常量 值 描述
QFileIconProvider::DontUseCustomDirectoryIcons 0x00000001 始终使用默认的目录图标。有些平台允许用户设置不同的图标,自定义图标在网络或可移动驱动上查找会造成一个很大的性能影响。

公共函数

  • QIcon icon(IconType type) const

    获取IconType图标类型对应的图标。

  • QIcon icon(const QFileInfo & info) const

    获取QFileInfo文件信息对应的图标。

  • Options options() const

    获取所有影响QFileIconProvider的选项。默认情况下,所有选项被禁用。

  • void QFileIconProvider::setOptions(Options options)

    设置所有影响QFileIconProvider的选项。

  • QString type(const QFileInfo & info) const

    获取QFileInfo文件信息对应的类型描述。

示例

IconType

获取IconType图标类型对应的图标:

效果

源码

QListWidget *pListWidget = new QListWidget(this);
pListWidget->setIconSize(QSize(48, 48)); // 设置单元项图片大小
pListWidget->setResizeMode(QListView::Adjust); // 设置大小模式-可调节
pListWidget->setViewMode(QListView::IconMode); // 设置显示模式
pListWidget->setMovement(QListView::Static); // 设置单元项不可被拖动
pListWidget->setSpacing(10); // 设置单元项间距
for (int i = 0; i <= 6; ++i)
{
// 获取图标
QFileIconProvider provider;
QIcon icon = provider.icon((QFileIconProvider::IconType)i); // 添加单元项
QListWidgetItem *pItem = new QListWidgetItem(pListWidget);
pItem->setIcon(icon);
pListWidget->addItem(pItem);
}

QFileInfo

获取QFileInfo文件信息对应的图标、类型描述:

效果

源码

QStringList strList;
strList << QString::fromLocal8Bit("新建文件夹") << QString::fromLocal8Bit("新建公文包")
<< QString::fromLocal8Bit("不存在此文件.exe") << QString::fromLocal8Bit("新建 360压缩 ZIP 文件.zip")
<< QString::fromLocal8Bit("新建 HTTP Archive File.har") << QString::fromLocal8Bit("新建 HttpWatch Log File.hwl")
<< QString::fromLocal8Bit("新建 Microsoft Access 数据库.accdb") << QString::fromLocal8Bit("新建 Microsoft Excel 工作表.xlsx")
<< QString::fromLocal8Bit("新建 Microsoft PowerPoint 演示文稿.pptx") << QString::fromLocal8Bit("新建 Microsoft Word 文档.docx")
<< QString::fromLocal8Bit("新建日记本文档.jnt") << QString::fromLocal8Bit("新建文本文档.txt"); for (int i = 0; i < strList.count(); ++i)
{
QFileInfo info;
info.setFile(QString("E:\\%1").arg(strList.at(i))); // 获取图标、类型
QFileIconProvider provider;
QIcon icon = provider.icon(info);
QString strType = provider.type(info); // 添加单元项
QListWidgetItem *pItem = new QListWidgetItem(pListWidget);
pItem->setIcon(icon);
pItem->setText(strType);
pListWidget->addItem(pItem);
}

这里需要注意,如果要获取文件相关的信息 - 图标、类型,那么,本地必须存在这些文件。如果不存在,那么图标不会显示,而且类型会变为Unknow(如图:不存在此文件.exe)。

那么,如果想要通过不存在的文件获取相关的信息该如何处理呢?下节我们分享。

Qt之QFileIconProvider的更多相关文章

  1. Qt之QFileIconProvider(根据扩展名获取文件图标、类型)

    简述 在Qt之QFileIconProvider一节中已经讲解关于如何获取文件图标与类型.但只仍针对本地已存在的文件,此节,我们主要运用前面分享的内容,讲述如何通过任意后缀或本地不存在的文件来获取相关 ...

  2. 《Qt 实战一二三》

    简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...

  3. Qt之根据扩展名获取文件图标、类型

    简述 在C++根据扩展名获取文件图标.类型一节中我们分享了如何根据扩展名来获取对应的文件图标.类型,下面.我们在Qt中使用它. 简述 示例 效果 源码 更多参考 示例 如下,我们根据扩展名来获取对应的 ...

  4. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

    在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...

  5. QTableWidget具体解释(样式、右键菜单、表头塌陷、多选等) (非代理)

    在公司公示Qt开发一段时间,表格用到不少,所以,今天在这做个总结,防止以后忘记. 下面为个人模拟Windows资源管理器的一个表单.(写的比較粗糙,谅解一下) 一.设置表单样式 table_widge ...

  6. QTableWidget - 基础讲解(2) 样式、右键菜单、表头塌陷、多选等

    转载:https://www.cnblogs.com/zhoug2020/p/3789076.html 在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是 ...

  7. 将vim作为QT开发的IDE

    转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIM ...

  8. Qt的类:qfileinfogatherer

    这篇文章中,探索Qt中的类qfileinfogatherer类,先给出私有类头文件.我们先想一想要形成一个信息采集者,需要什么?需要一个线程,当文件信息发生变化的时候,作为一个槽来接收信号. 先预备一 ...

  9. Qt 中一些常用类中文说明

    Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...

随机推荐

  1. Codeforces 679A Bear and Prime 100

    链接:传送门 题意:给你一个隐藏数,这个隐藏数在[2,100]之间,现在最多可以询问20次,每次询问的是这个数是不是隐藏数的底数,是为yes,不是为no,每次询问后都需要flush一下输出缓冲区,最后 ...

  2. CF1037E Trips (离线+图上构造)

    题目大意:一共有n个人,每天早上会有两个人成为朋友,朋友关系不具有传递性,晚上,它们会组织旅游,如果一个人去旅游,那么他不少于$k$个朋友也要和他去旅游,求每天的最大旅游人数 一开始并没有想到反向建图 ...

  3. vue实现双向绑定原理

  4. java类的属性

    类的嵌套!!!!!!!!!! 首先我们创建一个学生卡卡号的一个类,这个类有两个属性,校园卡号和银行卡号 package cuteSnow; public class StudentCard { pub ...

  5. Ubuntu 15.10 安装推荐链接

    整理一些Ubuntu 15.10系统安装使用的链接. Ubuntu官网下载:http://www.ubuntu.com/download/desktop,目前最新的版本是Ubuntu 15.10. 网 ...

  6. Core abstraction layer for telecommunication network applications

    A new sub-system, the core abstraction layer (CAL), is introduced to the middleware layer of the mul ...

  7. Oracle_角色_权限具体说明

    一.Oracle内置角色connect与resource的权限 grant connect,resource to user;  CONNECT角色: --是授予终于用户的典型权利,最主要的  ALT ...

  8. codevs 3372 选学霸(hash+并查集+多重背包)

    先通过并查集处理出来有多少种不同的集合,每一个集合有多少人.一定要不要忘记了与别的没有联系的独立点. 并查集的时候能够通过hash处理出来每一个数目同样的集合的个数. 这样以人数为权值.个数为限制进行 ...

  9. C++语言笔记系列之十八——虚函数(1)

    1.C++中的多态 (1)多态性:同一个函数的调用能够进行不同的操作,函数重载是实现多态的一种手段. (2)联编:在编译阶段进行联接.即是在编译阶段将一个函数的调用点和函数的定义点联接起来. A.静态 ...

  10. Reroute Unassigned Shards——遇到主shard 出现的解决方法就是重新路由

    Red Cluster! 摘自:http://blog.kiyanpro.com/2016/03/06/elasticsearch/reroute-unassigned-shards/ There a ...