Qt之QFileIconProvider续(获取文件图标、类型)
(2013-12-17 16:50:02)
标签:
qfileiconproviderqtemporaryfileqt后缀获取图标qt后缀获取类型后缀获取图标 |
分类: Qt |
步骤:
- 通过扩展名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;
}
效果如下:
注:
后一篇:Qt实现网络播放器