加载中…
个人资料
一去二三里
一去二三里
  • 博客等级:
  • 博客积分:0
  • 博客访问:6,320
  • 关注人气:909
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt之QFileIconProvider续(获取文件图标、类型)

(2013-12-17 16:50:02)
标签:

qfileiconprovider

qtemporaryfile

qt后缀获取图标

qt后缀获取类型

后缀获取图标

分类: Qt
   Qt之QFileIconProvider(获取文件图标、类型)一节中已经讲解关于如何通过扩展名获取文件类型与图标。Qt5开始QPixmap::fromWinHICON(HICON)已经消失得无影无踪,且获取图标、后缀的方法仍针对本地已存在的文件,那么,只能另寻出路,此节讲述如何通过扩展名来创建临时文件,并获取对应的图标、类型。

步骤:
  • 通过扩展名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; 
}

效果如下:


注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有