• 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

  • 相关阅读:
    ES5新特性:理解 Array 中增强的 9 个 API
    ios
    Jquery异步 Deferred Object
    ES5中新增的Array方法详细说明
    Chart
    Angular常用语句
    vticker.js--垂直滚动插件
    <css系列>之css--float总结
    理解boot.img与静态分析Android/linux内核
    理解竞争条件( Race condition)漏洞
  • 原文地址:https://www.cnblogs.com/RainyBear/p/5223103.html
Copyright © 2020-2023  润新知