标签:
qfileiconproviderqtemporaryfileqt后缀获取图标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;
}
效果如下:
注:
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
作者:
╰☆奋斗ing?孩子` 原文:
http://blog.sina.com.cn/s/blog_a6fb6cc90101h2ew.html。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。