标签:qt int win 盘符 获取 QDir 参考资料 U盘
最近有一个需求,需要在Windows环境下查找U盘,并下U盘中拷贝数据.遵照一般思路,先在网上搜寻各种资料,归纳起来有几种:
1,通过QStorageInfo,可以遍历所有的盘符,代码如下,可获得所有磁盘的盘符,
QList<QStorageInfo>cc= QStorageInfo::mountedVolumes(); for(int i=0;i<cc.count();i++) { QStorageInfo storage = cc.at(i); if (storage.isReadOnly()) qDebug() << "isReadOnly:" << storage.isReadOnly(); qDebug() << storage.rootPath() << "name:" << storage.name() << "fileSystemType:" << storage.fileSystemType() << "size:" << storage.bytesTotal()/1000/1000 << "MB" << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB"; }
参考资料
2,通过本地事件nativeEvent来实现,测试了下,不能发现u盘..
参考资料:https://blog.csdn.net/u011720560/article/details/80401857
3,通过QDir::drives(),获取所有驱动器,再用GetDriveType函数判断驱动器类型,实现U盘或普通磁盘的判别,,,但不能识别移动硬盘.修改后的代码如下:
QFileInfoList list = QDir::drives(); //获取当前系统的盘符 int temp_number=0; std::vector<UINT> driver_types; for(int i=0;i<list.count();++i) { UINT driver_type = GetDriveType((WCHAR *) list[i].filePath().utf16()); driver_types.push_back(driver_type); switch (driver_type) { case 0: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" 驱动类型不能确定"; break; case 1: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" 根路径无效"; break; case 2: temp_number++; qDebug()<<"u disk"<<list.at(i).absolutePath(); //qDebug()<<list[i].filePath()<<" "<<driver_type<<" 可移动驱动器:软盘驱动器,拇指驱动器或闪存卡读取器"; break; case 3: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" 固定驱动器:硬盘驱动器或闪存驱动器"; qDebug()<<"normal disk"<<list.at(i).absolutePath();; break; case 4: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" 远程(网络)驱动器"; break; case 5: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" CD-ROM驱动器"; break; case 6: //qDebug()<<list[i].filePath()<<" "<<driver_type<<" RAM磁盘"; break; default: break; } }
参考资料:https://blog.csdn.net/mars_xiaolei/article/details/103146372
标签:qt,int,win,盘符,获取,QDir,参考资料,U盘 来源: https://www.cnblogs.com/gethope5/p/15662175.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。