如何在Qt中获取Linux上USB驱动器的路径?

4
我已经成功地使用Qt编译了libusb,并且现在可以在usb设备连接和断开时接收事件。现在我需要获取目录的路径。在Windows下,这似乎非常容易,因为我可以根据Qt文档使用QDir::drives()。因此,对于Windows,它返回C:\、F:\等,我可以很容易地写入这些位置。然而,在Linux上,我只有USB PID和VID,我不知道如何获取到USB根目录的工作路径。我需要使用QFile在那里写一些文件。是否有通用的跨平台解决方案?

1
请注意,在Linux上,USB驱动器可能不会自动挂载! - rubenvb
我的答案中的解决方案可以解决这个问题 - 只需调用QStorageInfo::isValid()即可。http://doc.qt.io/qt-5/qstorageinfo.html#isValid - michnovka
1个回答

5
我找到了一段完全符合我的需求的代码:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {

   qDebug() << storage.rootPath();
   if (storage.isReadOnly())
       qDebug() << "isReadOnly:" << storage.isReadOnly();

   qDebug() << "name:" << storage.name();
   qDebug() << "fileSystemType:" << storage.fileSystemType();
   qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB";
   qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB";
}

输出:

"/run"
name: ""
fileSystemType: "tmpfs"
size: 6748 MB
availableSize: 6729 MB
"/"
name: ""
fileSystemType: "ext4"
size: 64370 MB
availableSize: 22236 MB
"/run/lock"
name: ""
fileSystemType: "tmpfs"
size: 5 MB
availableSize: 5 MB
"/home"
name: ""
fileSystemType: "ext4"
size: 183169 MB
availableSize: 27305 MB
"/run/user/1000"
name: ""
fileSystemType: "tmpfs"
size: 6748 MB
availableSize: 6748 MB
"/media/superuser/Backups"
name: "Backups"
fileSystemType: "ext4"
size: 252113 MB
availableSize: 133173 MB
"/media/superuser/Data"
name: "Data"
fileSystemType: "ext4"
size: 732123 MB
availableSize: 694298 MB
"/media/superuser/BackupWD"
name: "BackupWD"
fileSystemType: "fuseblk"
size: 209713 MB
availableSize: 13144 MB
"/media/superuser/WDSpace"
name: "WDSpace"
fileSystemType: "fuseblk"
size: 790484 MB
availableSize: 582583 MB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接