zoukankan      html  css  js  c++  java
  • Qt之QFileIconProvider

    简述

    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)。

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

  • 相关阅读:
    JAVA学习笔记(十二)
    JAVA学习笔记(十)
    JAVA学习笔记(九)
    JAVA学习笔记(八)
    JAVA学习笔记(七)
    JAVA学习笔记(六)
    JAVA学习笔记(五)
    20180313 mysql
    20180306 事件监听的方法 添加事件监听和取消事件监听 轮播图
    20180302DOM通过节点关系获取元素 表单元素 下拉列表 网页换肤 操作表格 问候
  • 原文地址:https://www.cnblogs.com/itrena/p/5938292.html
Copyright © 2011-2022 走看看