Как получить путь к USB-накопителю в Linux в Qt?

#c #linux #qt

#c #linux #qt

Вопрос:

Я успешно скомпилировал libusb с помощью Qt и теперь могу получать события при подключении и отключении USB-устройства.

Теперь мне нужно получить путь к каталогу. Это кажется довольно простым в Windows, так как я могу использовать QDir::drives() в соответствии с документацией Qt.

Итак, для Windows это возвращает C: , F: и т. Д., И я могу легко записывать в эти места.

Однако в Linux все, что у меня есть, это USB PID и VID, и я понятия не имею, как получить рабочий путь к корню USB. Мне нужно записать туда несколько файлов, используя QFile

Существует ли универсальное кроссплатформенное решение?

Комментарии:

1. Обратите внимание, что в Linux USB-накопители могут не монтироваться автоматически!

2.решение в моем ответе может позаботиться об этом — просто позвоните QStorageInfo::isValid() doc.qt.io/qt-5/qstorageinfo.html#isValid

Ответ №1:

Я нашел этот код, который делает именно то, что мне нужно:

 foreach (const QStorageInfo amp;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