当前位置: 首页 > news >正文

教程建设网站合肥网站建设5k5

教程建设网站,合肥网站建设5k5,怎么创建自己的官网,潍坊网站建设小程序制作Qt中获取系统图标、类型是通过QFileIconProvider来实现的,具体如下: 一、Qt获取系统文件图标1、获取文件夹图标QFileIconProvider icon_provider;QIcon icon icon_provider.icon(QFileIconProvider::Folder);2、获取指定文件图标QFileInfo file_info(n…

Qt中获取系统图标、类型是通过QFileIconProvider来实现的,具体如下:

一、Qt获取系统文件图标1、获取文件夹图标QFileIconProvider icon_provider;QIcon icon = icon_provider.icon(QFileIconProvider::Folder);2、获取指定文件图标QFileInfo file_info(name);
QFileIconProvider icon_provider;
QIcon icon = icon_provider.icon(file_info);二、Windows编程中获取系统图标、类型:QIcon Setting::getFileIcon(QString file_name)
{QIcon file_icon = QIcon(":/icon/file");if(!file_name.isEmpty()){//获取后缀std::string str = "file";int index = file_name.lastIndexOf(".");if(index >= 0){QString suffix = file_name.mid(index); //将QString转化为std::stringstr = suffix.toUtf8().constData(); //std::string((const char *)path.toLocal8Bit())  path.toLatin1().data();}LPCSTR name = str.c_str();SHFILEINFOA info;if(SHGetFileInfoA(name,FILE_ATTRIBUTE_NORMAL,&info,sizeof(info),SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_USEFILEATTRIBUTES)){HICON icon = info.hIcon;file_icon = QIcon(QPixmap::fromWinHICON(icon));}}return file_icon;
}QString Setting::getFileType(QString file_name)
{QString file_type = QString("file");if(!file_name.isEmpty()){//获取后缀std::string str = "file";int index = file_name.lastIndexOf(".");if(index >= 0){QString suffix = file_name.mid(index); //将QString转化为std::stringstr = suffix.toUtf8().constData();}LPCSTR name = str.c_str();SHFILEINFOA info;if(SHGetFileInfoA(name,FILE_ATTRIBUTE_NORMAL,&info,sizeof(info),SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES)){std::string type = info.szTypeName;file_type = type.c_str();}}return file_type;
}QIcon Setting::getFolderIcon()
{QIcon folder_icon = QIcon(":/icon/folder");//将QString转化为std::stringstd::string str = "folder";LPCSTR name = str.c_str();SHFILEINFOA info;if(SHGetFileInfoA(name,FILE_ATTRIBUTE_DIRECTORY,&info,sizeof(info),SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_USEFILEATTRIBUTES)){HICON h_icon = info.hIcon;folder_icon = QIcon(QPixmap::fromWinHICON(h_icon)); }return folder_icon;
}QString Setting::getFolderType()
{QString folder_type = QString("folder");std::string str = "folder";LPCSTR name = str.c_str();SHFILEINFOA info;if(SHGetFileInfoA(name,FILE_ATTRIBUTE_DIRECTORY,&info,sizeof(info),SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES)){std::string type = info.szTypeName;folder_type = type.c_str();}return folder_type;
}

两种方式最大的区别是什么呢?参考:filesystems - Qt 4.8 - QFileIconProvider, Getting icon for non-existent file (based on extension) - Stack Overflow 诸如所言,Qt所提供的获取图标的方法是本地已存在的文件,如果要通过扩展名来获取图标则需要自己来虚拟构造本地文件,而在数据量较大的情况下往往会影响性能。这(通过扩展名获取图标、类型)可以通过Windows API来实现,即方法二。

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; 
}

 

 

http://www.yayakq.cn/news/477290/

相关文章:

  • wordpress 企业网站 教程个人网站风格
  • 整站网站优化费用wordpress在线安装主题
  • 在那个网站做驾校模拟题浙江省建设协会网站首页
  • 去哪找做网站的客户青岛房产网站
  • 如何登录网站备案移动crm系统客户端
  • 连云港网站建设网站软文设计
  • 绵阳网站维护托管友情链接发布平台
  • 云南省住房和城乡建设厅网站站长工具劲爆
  • 网站建设登录界面设计步骤网站的营销方法
  • 合肥网站优化排名推广互站网怎么样
  • 免费网站建设站王者荣耀是哪家公司开发的
  • 制作简历哪个网站好陕西省城乡住房建设厅网站
  • wordpress自动网站地址广州微盟微商城
  • 买好域名和云主机后怎么做网站新浪sae 安装wordpress
  • 企业网站seo哪里好物流企业网站建设特色
  • 国外网站推广如何做网站原型图软件
  • 淘宝网站的推广与优化建筑施工企业主要负责人安全证书
  • 网站案例展示分类广告联盟挂机
  • 专门做ppt的网站叫什么jsp电子商务网站开发源码
  • 如何利用淘宝建设网站挣钱游戏开发用什么语言
  • 美容美发网站模板长宁区网站建设网站制作
  • 网站建设教程17建设门户网站
  • 合肥模板网站建设费用网站模板 茶叶响应式
  • 有哪些网站可以做兼职衡水seo_衡水网站建设-燕丰收
  • 宁波建设银行网站分部网络营销的主要传播渠道是
  • 安义网站建设wordpress 上传功能
  • 公司网站建设什么价格低园区网站建设
  • 重庆网站推广大全2022做网站还能赚钱吗
  • 南浔建设网站在线教学网站建设
  • 网站做外链的具体步骤wordpress影视主题下载失败