zoukankan      html  css  js  c++  java
  • Qt5获取系统文件图标,文件路径

    获取系统图标:

    QFileIconProvider icon_provider;
    QIcon icon = icon_provider.icon(QFileIconProvider::Folder);

    其中可以获取的系统图标有:

    Constant                                Value
    QFileIconProvider::Computer               0
    QFileIconProvider::Desktop                1
    QFileIconProvider::Trashcan               2
    QFileIconProvider::Network                3
    QFileIconProvider::Drive                  4
    QFileIconProvider::Folder                 5
    QFileIconProvider::File                   6

    获取文件图标/文件类型:

    QFileInfo file_info(name);
    QFileIconProvider icon_provider;
    QIcon icon = icon_provider.icon(file_info);
    /QString type = icon_provider.type(file_info);

    注:该方法只可以获取系统的本地图标和本地文件类型。要通过扩展名来获取图标需要创建临时文件,但不适用大量文件虚拟。

    步骤:
    • 通过扩展名extension(.***)构造临时文件QTemporaryFile
    • 通过QFileIconProvider获取对应的图标、类型 
    • 删除临时文件

    获取图标:

    QIcon FileIcon::fileExtensionIcon (const QString extension) const 
    {
        QFileIconProvider icon_provider;
        QIcon icon;
        QTemporaryFile tmp_file(QDir::tempPath() + QDir::separator() + QCoreApplication::applicationName() + "_XXXXXX" + extension);
        tmp_file.setAutoRemove(false);
    
        if(tmp_file.open()) 
        {
            QString file_name = tmp_file.fileName();
            tmp_file.write(QByteArray());
            tmp_file.close();
    
            icon = icon_provider.icon(QFileInfo(file_name));
            tmp_file.remove();
        } 
        else 
        {
            qCritical()<<QString("failed to write temporary file %1").arg(tmp_file.fileName());
        }
    
        return icon;
    }                            

    获取类型:

    QString FileIcon::fileExtensionType(const QString & extension) const 
    {
      QFileIconProvider icon_provider;
      QString type;
      QTemporaryFile tmp_file(QDir::tempPath() + QDir::separator() + QCoreApplication::applicationName() + "_XXXXXX" + extension);
      tmp_file.setAutoRemove(false);
    
      if(tmp_file.open()) 
      {
        QString file_name = tmp_file.fileName();
        tmp_file.write(QByteArray());
        tmp_file.close();
    
        type = icon_provider.type(QFileInfo(file_name));
    
        tmp_file.remove();
      } 
      else 
      {
        qCritical()<<QString("failed to write temporary file %1") .arg(tmp_file.fileName());
      }
    
    return type; 
    }

    参考:http://blog.sina.com.cn/s/blog_a6fb6cc90101h2ew.html

  • 相关阅读:
    【iOS】7.4 定位服务->2.1.1 定位
    【iOS】7.4 定位服务->1.0 简介
    1.2.1 OC概述
    5.1 网络基础
    4.4 多线程进阶篇<下>(NSOperation)
    4.3 多线程进阶篇<中>(GCD)
    4.1/4.2 多线程进阶篇<上>(Pthread & NSThread)
    4.0 多线程基础篇
    2.1 -1.0 Xcode(发布时间、使用、快捷键、插件相关)
    一款面试复习应用源码
  • 原文地址:https://www.cnblogs.com/RainyBear/p/5223103.html
Copyright © 2011-2022 走看看